当前位置: 首页 > news >正文

主角重生做代购网站发家/品牌策划方案ppt

主角重生做代购网站发家,品牌策划方案ppt,做网站靠教育赚钱,软件系统开发合同在WPF中自定义你的绘制(三) 周银辉图形合并有时候我们需要将多个图形合并成一个然后进行绘制,比如将一个圆形与一个矩形进行合并等. 在WPF的自定义绘制中,有三…
  在WPF中自定义你的绘制(三)
                                                                  周银辉

图形合并
有时候我们需要将多个图形合并成一个然后进行绘制,比如将一个圆形与一个矩形进行合并等. 在WPF的自定义绘制中,有三种方法可以做到,分别是(1)利用GeometryGroup对象;(2)利用CombinedGeometry对象;(3)使用Geometry.Combin()静态方法。其中第一种方式是利用集合并可以向集合中添加任意多个元素,而后面两种方式只能两两合并,但后面两者的合并方式更灵活,可以是两图形的“交集”“并集”“差集”以及“异或”。

1 ,使用GeometryGroup对象进行图形合并
参考以下代码,我们合并了一个椭圆与一个矩形:
None.gif protected override void OnRender(DrawingContext dc)
ExpandedBlockStart.gifContractedBlock.gif        
dot.gif{
InBlock.gif            
base.OnRender(dc);
InBlock.gif
InBlock.gif            
//public sealed class GeometryGroup : Geometry
InBlock.gif
            EllipseGeometry ellipse = new EllipseGeometry(new Point(5050), 5020);
InBlock.gif            RectangleGeometry rect 
= new RectangleGeometry(new Rect(50505020), 55);
InBlock.gif
InBlock.gif            GeometryGroup group 
= new GeometryGroup();
InBlock.gif            group.FillRule 
= FillRule.EvenOdd;
InBlock.gif            group.Children.Add(ellipse);
InBlock.gif            group.Children.Add(rect);
InBlock.gif
InBlock.gif            dc.DrawGeometry(Brushes.LightBlue, 
new Pen(Brushes.Green, 2), group);
ExpandedBlockEnd.gif        }
效果图如下:
customPaint_GeometryGroup1.png
我们只是简单地将两个图形以相加的方式合并在了一起,注意到合并后的图形中间部分出现一个镂空的无色区域,是由合并后的图形的FillRull决定的,如果我们把group.FillRule = FillRule.EvenOdd;更改为 group.FillRule = FillRule.Nonzero;则填充效果将是如下这样:
customPaint_GeometryGroup2.png


2, 使用CombinedGeometry对象进行图形合并
参考以下代码,我们合并了一个椭圆与一个矩形:
None.gif protected override void OnRender(DrawingContext dc)
ExpandedBlockStart.gifContractedBlock.gif        
dot.gif{
InBlock.gif            
base.OnRender(dc);
InBlock.gif
InBlock.gif            
//public sealed class CombinedGeometry : Geometry
InBlock.gif
            EllipseGeometry ellipse = new EllipseGeometry(new Point(5050), 5020);
InBlock.gif            RectangleGeometry rect 
= new RectangleGeometry(new Rect(50505020), 55);
InBlock.gif
InBlock.gif            CombinedGeometry combin 
= new CombinedGeometry(GeometryCombineMode.Xor, ellipse, rect);
InBlock.gif
InBlock.gif            dc.DrawGeometry(Brushes.LightBlue, 
new Pen(Brushes.Green, 2), combin);
ExpandedBlockEnd.gif        }
注意到GeometryCombineMode枚举,它有四个枚举值,如果我们有A,B分别表示两个图形的话,那么:
GeometryCombineMode.Exclude:  合并结果为A-BcustomPaint_CombinedGeometry_Exclude.png

GeometryCombineMode.Intersect:  合并结果为A与B的相交部分customPaint_CombinedGeometry_Intersect.png

GeometryCombineMode.Union:  合并结果为A+BcustomPaint_CombinedGeometry_Union.png

GeometryCombineMode.Xor:  合并结果为(A-B)+(B-A)customPaint_CombinedGeometry_Xor.png

3, 使用Geometry.Combin()静态方法进行图形合并
Geometry.Combin()静态方法与使用CombinedGeometry对象进行图形合并差不多
None.gif protected override void OnRender(DrawingContext dc)
ExpandedBlockStart.gifContractedBlock.gif        
dot.gif{
InBlock.gif            
base.OnRender(dc);
InBlock.gif
InBlock.gif
InBlock.gif            
//Geometry.Combin()
InBlock.gif
            EllipseGeometry ellipse = new EllipseGeometry(new Point(5050), 5020);
InBlock.gif            RectangleGeometry rect 
= new RectangleGeometry(new Rect(50505020), 55);
InBlock.gif
InBlock.gif            PathGeometry combin 
= Geometry.Combine(ellipse, rect, GeometryCombineMode.Xor, null);
InBlock.gif
InBlock.gif            dc.DrawGeometry(Brushes.LightBlue, 
new Pen(Brushes.Green, 2), combin);
InBlock.gif
ExpandedBlockEnd.gif        }
其中Geometry.Combin()静态方法中有用于图形变换的参数(旋转,缩放等),如果不需要变换则填写null





http://www.lbrq.cn/news/797293.html

相关文章:

  • 孝感 网站建设/站长网站优化公司
  • 怎样申请一个网站/太原百度seo排名
  • 传播型网站建设优势有哪些/网络营销专业是干嘛的
  • 怎么做网站支付/无锡网站建设公司
  • 电影微网站开发/链接买卖价格
  • 合肥高端网站建设设计/app推广拉新工作可靠吗
  • 模板建站seo优化/沧州网站seo
  • 金溪那里可以做网站/青岛seo经理
  • 基于工作过程的商务网站建设 网页制作/济南百度竞价代运营
  • 好的做问卷调查的网站好/网站友情链接是什么
  • app软件开发培训班/微信seo是什么意思
  • 网站备案需要去哪办理/广告投放网
  • 没有公司可以做网站吗/如何做网络推广运营
  • 网站建设php/哪个平台可以接推广任务
  • 小型网站建设/seo优化关键词排名
  • 宿迁做网站 宿迁网站建设/seo是什么职业做什么的
  • 网站建设创作思路怎么写/360竞价推广登录入口
  • 电子商务网站建设书籍/域名
  • 酒店网站建设描述/chrome浏览器
  • 上海品牌型网站建设靠谱/汕头网站建设公司
  • 公司网站怎么做才能吸引人/免费行情软件网站下载大全
  • 山东省环保厅官方网站建设项目/百度前三推广
  • 时时彩 网站开发/郑州网站制作公司哪家好
  • 网站建设的设备/杭州企业seo
  • 万网主机网站建设数据库怎么弄/seo排名优化教程
  • 数据库做网站/广东短视频seo搜索哪家好
  • 局网站建设进入前十名/有免费推广平台
  • c 网站开发 调试/seo排名的影响因素有哪些
  • 电子商务他们的代表网站/济南网站建设方案
  • 域名访问网站应该怎么做/seo专业技术培训
  • Flutter各大主流状态管理框架技术选型分析及具体使用步骤
  • 简化理解I2C总线
  • java中的synchronized关键字​
  • MyBatisPlus之核心注解与配置
  • 预测性维护之温振传感器选型与应用秘籍
  • echarts一个图例控制多个图表