提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
原创|使用教程|编辑:郝浩|2013-03-01 17:13:15.000|阅读 878 次
概述: 在今天的文中,将会分享一下如何在Chat FX for WPF 中创建条形显示地图的条形图,附加源码和图片。
#慧都22周年庆大促·界面/图表报表/文档/IDE/IOT/测试等千款热门软控件火热促销中>>
相关链接:
在今天的文中,将会分享一下如何在WPF图表控件Chart FX for WPF中创建有地图的条形图表,下面是第一次尝试在条形图中显示图像:
<cfx:Chart Gallery="Bar">
<cfx:Chart.Series>
<cfx:SeriesAttributes/>
</cfx:Chart.Series>
<cfx:Chart.AllSeries>
<cfx:AllSeriesAttributes>
<cfx:AllSeriesAttributes.Template>
<DataTemplate>
<Canvas>
<Rectangle Width="{Binding Path=Width}" Height="{Binding Path=Height}">
<Rectangle.Fill>
<ImageBrush ImageSource="C:\Temp\WorldMap.png"/>
</Rectangle.Fill>
</Rectangle>
</Canvas>
</DataTemplate>
</cfx:AllSeriesAttributes.Template>
</cfx:AllSeriesAttributes>
</cfx:Chart.AllSeries>
</cfx:Chart>
我们将绑定这个矩形条的宽度和高度都我们创建的逻辑上的项目的宽度和高度上去,值得注意的是,我们并不担心左边和顶部,因为这些都将会在内部进行处理。现在我们正打算创建一个画布,因为将会在里面添加更多的元素,下面就是我们所得到的效果:

显然这不是我们想要的效果,实际上在WPF的图表中也没有这个功能去画矩形,尤其是ImageBrush / DrawingBrush的“region”。即使我们尝试设置Stretch到UniformToFill,也只可以让条形显示一部分。 这个想法主要是想要确保所有的条形在完整的图形区域中实际根据条形几何绘制位图。我们的逻辑项目支持PlotWidth 和PlotHeight,这样的话就会返回完整的绘制区域的面积,但是由于我们的画布会自动转移到条形的位置,所以就取消了这个操作,我们的逻辑项目排列在左边和顶部,所以需要创建一个简单的转换器:
public class NegateConverter : IValueConverter
{
object IValueConverter.Convert (object value, Type targetType,
object parameter, CultureInfo culture)
{
if (value is double)
return -((double) value);
else
return value;
}
object IValueConverter.ConvertBack (object value, Type targetType,
object parameter, CultureInfo culture)
{
if (value is double)
return -((double) value);
else
return value;
}
}
修改我们的模板如下:
<DataTemplate>
<Canvas>
<Canvas.Resources>
<local:NegateConverter x:Key="negateConverter"/>
</Canvas.Resources>
<Rectangle Canvas.Left="{Binding Path=Left,
Converter={StaticResource negateConverter}}"
Canvas.Top="{Binding Path=Top,
Converter={StaticResource negateConverter}}"
Width="{Binding Path=PlotWidth}" Height="{Binding Path=PlotHeight}"
Clip="{Binding Path=BoundsGeometry}">
<Rectangle.Fill>
<ImageBrush Stretch="UniformToFill" ImageSource="C:\Temp\WorldMap.png"/>
</Rectangle.Fill>
</Rectangle>
</Canvas>
</DataTemplate>
同时设置了这个矩形的Clip属性到我们逻辑项目后的一个新的属性中,这样的话就会返回一个几何形状,使用这个需要用到ChartFX创建3488或更厚,这样就会更加接近于我们的外观。

在这里还需要修改一些设计增量,首先添加为每个条形添加一个阴影效果。
<DataTemplate>
<Canvas>
<Canvas.Resources>
<local:NegateConverter x:Key="negateConverter"/>
</Canvas.Resources>
<Rectangle Width="{Binding Path=Width}" Height="{Binding Path=Height}"
Fill="#404040" Stroke="#404040"
StrokeThickness="{Binding Path=StrokeThickness}">
<Rectangle.BitmapEffect>
<DropShadowBitmapEffect/>
</Rectangle.BitmapEffect>
</Rectangle>
<Rectangle Canvas.Left="{Binding Path=Left,
Converter={StaticResource negateConverter}}"
Canvas.Top="{Binding Path=Top,
Converter={StaticResource negateConverter}}"
Width="{Binding Path=PlotWidth}" Height="{Binding Path=PlotHeight}"
Clip="{Binding Path=BoundsGeometry}">
<Rectangle.Fill>
<ImageBrush Stretch="UniformToFill" ImageSource="C:\Temp\WorldMap.png"/>
</Rectangle.Fill>
</Rectangle>
</Canvas>
</DataTemplate>

如果将上述中的3个值设置小于20,你将看不见大部分地图,甚至会失去这个效果,在这里就可以在绘图区域中使用相同的位图。
<cfx:Chart.PlotArea>
<cfx:PlotAreaAttributes>
<cfx:PlotAreaAttributes.Background>
<ImageBrush Opacity="0.35" Stretch="UniformToFill"
ImageSource="C:\Temp\WorldMap.png" />
</cfx:PlotAreaAttributes.Background>
</cfx:PlotAreaAttributes>
</cfx:Chart.PlotArea>

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@hmdbvip.cn
文章转载自:慧都控件



本文将为大家介绍如何在MyEclipse中使用XDoclet开发EJB 2 Session Bean,欢迎下载最新版体验!
如果能将 CSV 自动转换为 PDF ,就能快速生成清晰、美观的报表,既节省手动排版时间,又能保持数据的专业呈现。本文将介绍如何使用 Spire.XLS for Java 实现这一过程——从加载 CSV 到输出高质量 PDF,仅需数行代码即可完成。
Parasoft C/C++test是一款专为C/C++代码设计的自动化测试工具,通过静态代码分析、单元测试和运行时错误检测等功能,帮助开发团队在早期发现并修复缺陷,提升代码质量和开发效率 。在实际使用中,尤其是在VC6此类旧版开发环境中执行单元测试时,可能会因环境兼容性问题触发链接错误。
本文主要介绍如何在MVVM应用程序中使用虚拟源,欢迎下载最新版组件体验!
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@hmdbvip.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢
永利最大(官方)网站