提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
原创|使用教程|编辑:郝浩|2013-03-01 17:13:15.000|阅读 814 次
概述: 在今天的文中,将会分享一下如何在Chat FX for WPF 中创建条形显示地图的条形图,附加源码和图片。
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
相关链接:
在今天的文中,将会分享一下如何在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@cahobeh.cn
文章转载自:慧都控件本文探讨 SQL Server 中 NULL 和空值之间的区别,并讨论如何有效地处理它们。
Unity 是一款功能极其丰富的游戏引擎,允许开发人员将各种媒体集成到他们的项目中。但是,它缺少最令人兴奋的功能之一 - 将 Web 内容(例如 HTML、CSS 和 JavaScript)直接渲染到 3D 场景中的纹理上的能力。在本文中,我们将介绍如何使用 DotNetBrowser 在 Unity3D 中将 Web 内容渲染为纹理。
DevExpress v24.2帮助文档正式发布上线了,请按版本按需下载~
本教程将向您展示如何用MyEclipse构建一个Web项目,欢迎下载最新版IDE体验!
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@cahobeh.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢