目前,我有两个圆弧,但是有一些颜色错误的小边框(见黑色箭头):xaml:
<Window x:Class="WpfApplication9.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525"
xmlns:ed="http://schemas.microsoft.com/expression/2010/drawing">
<Grid Width="150" Height="150">
<ed:Arc
x:Name="BorderArc"
ArcThickness="15"
StrokeThickness="0"
ArcThicknessUnit="Pixel"
StartAngle="270"
EndAngle="45"
Fill="Red"
Stretch="None"
RenderTransformOrigin=".5 .5"
Width="150"
Height="150">
</ed:Arc>
<ed:Arc
x:Name="Border"
ArcThickness="15"
StrokeThickness="0"
ArcThicknessUnit="Pixel"
StartAngle="270"
EndAngle="30"
Fill="Gray"
Stretch="None"
RenderTransformOrigin=".5 .5"
Width="150"
Height="150">
</ed:Arc>
</Grid>
请给我一个解决方案,删除小红边(见黑色箭头)?谢谢你帮我?
发布于 2015-08-07 16:38:54
您可以将灰色弧线的ArcThickness设置为15.1,然后查看是否删除了红色轮廓。
如果给两个圆弧一个单像素的白色边框,会发生什么?
选项1:修改ViewModel
您的ViewModel是否可以修改为像这样处理圆弧:
ArcViewModels = new List<SingleArcViewModel>();
for (var i = 0; i < Arcs.Count; i++)
{
if (i == 0)
{
ArcViewModels.Add(new SingleArcViewModel(Arcs[i].StartAngle, Arcs[i].EndAngle));
}
else
{
ArcViewModels.Add(new SingleArcViewModel(Arcs[i - 1].EndAngle, Arcs[i].EndAngle));
}
}(我假设构造函数首先接受StartAngle,然后是EndAngle)。其中,Arcs是现有的圆弧列表,ArcViewModels是要将视图绑定到的列表。它将每个圆弧的StartAngle设置为前一个圆弧的EndAngle。
我已经在一个简单的应用程序中尝试过了,它工作得很好,显然你必须对你的视图模型做一些修改来处理绑定到的弧线。
选项2:通过IValueConverter运行圆弧收集
您需要创建一个如下所示的Converter类:
public class ArcCollectionConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var arcsCollection = value as ArcViewModel[];
if (arcsCollection == null)
return value;
var result = new List<ArcViewModel>();
for (var i = 0; i < arcsCollection.Count(); i++)
{
if (i == 0)
{
result.Add(new SingleArcViewModel(arcsCollection[i].StartAngle, arcsCollection[i].EndAngle));
}
else
{
result.Add(new SingleArcViewModel(arcsCollection[i - 1].EndAngle, arcsCollection[i].EndAngle));
}
}
return result;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}然后将以下内容添加到视图中的引用中:
xmlns:cc="clr-namespace:LocalExperiment.Models"资源:
<Window.Resources>
<cc:ArcCollectionConverter x:Key="ArcCollectionConverter" />
</Window.Resources>并在绑定到arcs集合的任何位置使用该转换器:
<ItemsControl ItemsSource="{Binding MyArcs, Converter={StaticResource ArcCollectionConverter}}"></ItemsControl>您可能需要修改一些类型以使其与您的ViewModel一起工作,但希望这能帮助您入门。
发布于 2015-08-07 19:21:11
你有一个弧线在另一个弧线上。只需修改它们,使其不重叠:
<!-- I have ommited some properties -->
<ed:Arc StartAngle="30" EndAngle="45" Fill="Red" />
<ed:Arc StartAngle="275" EndAngle="30" Fill="Grey" />https://stackoverflow.com/questions/31869782
复制相似问题