2016-02-11 74 views
0

我想繪製一個空的橢圓內(如單選按鈕)內的填充橢圓,整個事情是可擴展的。奇怪的WPF對齊網格

我已經試過這種方式(電網看起來必要的,如果我使用一個邊框的比例不會看起來是一樣的)

<Grid Background="White"> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="2*" /> 
     <RowDefinition Height="5*" /> 
     <RowDefinition Height="2*" /> 
    </Grid.RowDefinitions> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="2*" /> 
     <ColumnDefinition Width="5*" /> 
     <ColumnDefinition Width="2*" /> 
    </Grid.ColumnDefinitions> 
    <Ellipse Stroke="Black" StrokeThickness="3" Grid.RowSpan="3" Grid.ColumnSpan="3"></Ellipse> 
    <Ellipse StrokeThickness="0" Fill="Red" Grid.Row="1" Grid.Column="1" /> 
</Grid> 

當控制爲30×30,填充的橢圓不看居中,有一個小的偏移量(看起來更接近右下角)。 如果我將2-5-2更改爲1-2-1,它看起來更接近左上角。

任何想法,爲什麼它的行爲是這樣嗎?更重要的是,我怎樣才能讓它更加對稱?

謝謝你提前(對不起我的英文不好)任何幫助。 (順便說一下,我使用.Net FW 4.5)

回答

0

從我可以告訴,這是因爲你有的測量。你已經說過,控件應該是30x30,但是你已經將它分割成不可能均勻分佈的方式:中間列的50%(15像素)使15個像素均勻分佈在另外兩個列,不能均勻地完成。

我的建議是將度量設置爲友好的,比如32x32(這似乎在我嘗試使用時是很好的,而且是典型的方法) - 但是如果您需要它可以真正地縮放到任何尺寸,可以設置一些性能讓你的對象忽略「四捨五入」,當元素是像素之間WPF呢,這裏是我的建議:

MSDN UseLayoutRounding

MSDN PixelSnapping

嘗試對電網和橢圓設置這些。

0

我剛剛將RowDefinitions的高度和寬度從2更改爲3,而且似乎完成了這項工作。

<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="3*" /> 
     <RowDefinition Height="5*" /> 
     <RowDefinition Height="3*" /> 
    </Grid.RowDefinitions> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="3*" /> 
     <ColumnDefinition Width="5*" /> 
     <ColumnDefinition Width="3*" /> 
    </Grid.ColumnDefinitions> 
    <Ellipse Stroke="Black" StrokeThickness="3" Grid.RowSpan="3" Grid.ColumnSpan="3"></Ellipse> 
    <Ellipse StrokeThickness="0" Fill="Red" Grid.Row="1" Grid.Column="1" /> 
</Grid> 

似乎解決了這個問題,但可能沒有,如果你要一個很好的修復使用大於30×30的控制