WPF DrawingContext Pen】的更多相关文章

<Window x:Class="WPFDrawing.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2…
如何有人告诉你,请你画出1像素的线,是不是觉得很简单,实际上在 WPF 上还是比较难的. 本文告诉大家,如何让画出的线不模糊 画出线的第一个方法,创建一个 Canvas ,添加一个线 界面代码 <Canvas x:Name="Canvas"></Canvas> 在后台添加一条线 Line myLine = new Line(); myLine.Stroke = System.Windows.Media.Brushes.Black; myLine.X1 = 100…
此前有小伙伴询问我为何他 1 像素的线条显示发虚,然后我告诉他是“像素对齐”的问题,然而他设置了各种对齐像素的属性依旧没有作用.于是我对此进行了一系列试验,对 WPF 像素对齐的各种方法进行了一次总结.此后在 StackOverflow 中,我回答了 graphics - WPF DrawingContext seems ignore SnapToDevicePixels - Stack Overflow 问题. 阅读本文,我们将了解解决 WPF 像素对齐的四种方法以及其各自的适用范围和副作用.…
title author date CreateTime categories win10 uwp 气泡 lindexi 2018-08-10 19:16:50 +0800 2018-2-13 17:23:3 +0800 Win10 UWP 如果做聊天工具,需要气泡. 本文,如果写一个气泡控件需要如何做 ## WPF 气泡 先说如何在 WPF 做一个气泡. 可以看到,气泡就是一个和 Grid 差不多的东西,只是有边框,边框是一个气泡 如何去写一个外框? 可以新建一个类,继承 Decorator…
DrawingContext比较类似WinForm中的Graphics 类,是基础的绘图对象,用于绘制各种图形,它主要API有如下几种: 绘图API 绘图API一般形为DrawingXXX系列,常用的基础的绘图API有: DrawEllipse DrawGeometry DrawGlyphRun DrawImage DrawRectangle DrawRoundedRectangle 这些和GDI的API是非常相似的,WPF的API中另外还都有一个带动画的版本,不过一般很少用. 另外还有两个相对…
原文链接:http://ju.outofmemory.cn/entry/132476 最近在项目中接手了一个比较有挑战性的模块——用斑马打印机将需要打印的内容打印出来.苦苦折腾了两天,总算有所收获,就发到网上来骗骗分数-_-|| 项目中使用的打印机型号为GX430t的打印机,接手的时候,自己对于打印机这块儿是眼前一抹黑,啥都不知道.没办法一步步来. 首先尝试使用WPF中的PrintDialog里面的PrintVisual和PrintDocument方法,打印机是一点反应都没有,最后得到的结论是:…
首先创建一个自定义控件,继承自FrameworkElement,“Generic.xaml”中可以不添加样式. 要自定义空心文字,要用到绘制格式化文本FormattedText类.FormattedText对象提供的文本格式设置功能比WPF提供的已有文本控件提供的相应功能更为强大.调用FormattedText构造函数,可以传入相应的参数,得到我们想要的文本样式.使用 MaxTextWidth 属性可以将文本约束为特定宽度. 文本将自动换行,以避免超过指定宽度. 使用 MaxTextHeight…
  我现在是这么画的,class A { private GeometryGroup _lines; private Path _path; public A() {    _path.Data = _lines; } public Draw() {   LineGeometry line = new LineGeometry(p1, p2);   _lines.Children.Add(line); } }一开始的速度很好,但是线多了以后,就有明显的延迟了. 有什么更快速的方法不? 解决方案…
转自:http://www.cnblogs.com/tmywu/archive/2010/09/14/1825650.html 在WPF中我们可以将Canvas当成一种画布,将Canvas中的控件当成元素,讲其转成位图文件: 如下效果 图1.1 你可以设置Canvas的宽度.高度和颜色类型,生成任何你想要的图片.实时呈现你设置的样式等效果. 包括创建一些特效如阴影等. WPF提供RenderTargetBitmap类将任何容器控件渲染成一个位图. 新建一个WPF项目,在页面中创建一个CANVAS…
一.基础知识 1.System.Printing命名空间 我们可以先看一下System.Printing命名空间,东西其实很多,功能也非常强大,可以说能够控制打印的每一个细节,曾经对PrintDialog失望的我看到了一丝曙光. 2.PrintDialog 可以看到PrintDialog除了构造函数有三个方法和一堆属性,PrintDocument接受一个分页器(DocumentPaginator,稍后介绍),PrintVisual可以打印Visual,也就是WPF中的大部分继承自Visual类的…
以前在用WinForm的时候,可以通过GDI+接口在窗体上动态绘制自定义的图形.在WPF中有没有对应的API呢,最近项目中用到了这个,在这里总结一下. WPF中的Drawing主要提供了几类API: 1. Drawing类型 该组类型主要用来对绘制的对象的描述.比如GeometryDrawing是描述一个几何图形的Drawing,它的Geometry属性定义了它所描述的几何图形是什么样子.(它可以是如下Geometry类型的派生类型的任何一种,GeometryGroup是对多个Geometry的…
首先,由于WPF中不象GDI+中有Graphics对象,因此你无法使用Graphics进行绘图了,取而代之的是:DrawingContext:类似地,GDI+中的OnPaint已被OnRender取代.其次,UIElement有一个OnRendar方法,它的定义是:protected virtual void OnRender (DrawingContext drawingContext)但我们不能直接调用OnRender方法,也不能直接创建DrawingContext实例,但可以利用 Draw…
原文:<Programming WPF>翻译 第7章 5.可视化层编程 形状元素能提供一种便利的方式与图形一起工作,在一些情形中,添加表示绘图的元素到UI树中,可能是比它的价值更加麻烦.你的数据可能被构造以一种易于编写代码的方式--简单地表现一系列基于数据的绘图操作,而不是构造一棵对象树. WPF提供一个“可视化层”API,作为一个对形状元素较低级别的折中.(实际上,形状元素全都在可视化层得顶部被实现.)这个API使我们编写按需生成的代码. 可视化是一个可见的对象.WPF应用程序的外观是将它所…
原文:在WPF中自定义你的绘制(三) 在WPF中自定义你的绘制(三)                                                                  周银辉图形合并有时候我们需要将多个图形合并成一个然后进行绘制,比如将一个圆形与一个矩形进行合并等. 在WPF的自定义绘制中,有三种方法可以做到,分别是(1)利用GeometryGroup对象:(2)利用CombinedGeometry对象:(3)使用Geometry.Combin()静态方法.其中第…
原文:在WPF中自定义你的绘制(一)   在WPF中自定义你的绘制(一)                                                                    周银辉        在传统的Windows窗体编程中,如果我们需要打造一些比较个性化的控件,那么我们常常需要自定义控件的绘制(重写OnPaint等),即需要经常用到Graphics对象.而在WPF中,我们可以使用Xaml轻松编写出很有特色的界面元素,似乎与以前的以前利用Graphics对象…
原文:在WPF中自定义你的绘制(二)   在WPF中自定义你的绘制(二)                                                                   周银辉1,绘制几何图形也许你在使用WPF进行开发的时候已经注意到一个很有意思的现象,要在屏幕上显示一个圆形(椭圆),你可以使用Ellipse对象,如下面的代码所示: <Grid>          <Ellipse Fill="#FFFFFFFF" Stroke=&…
希望大家有这方面好的代码给提供下,谢谢了! 想用C#做一个和手机上一样的图形密码键盘,貌似这方面资料比较少,虽然winphone手机上也有但是网上也没有这方面的代码.只好用常规的思维去实现一下,当然是比较简单的,希望各路高手能给一些好的建议,这篇文章算是抛砖引玉吧,用WPF实现. 思路如下:     使用常用控件从最简单的图案绘制,然后放在相应的控件上,利用鼠标的Move事件,判断鼠标滑过哪些控件,然后将控件上的对应密码的数字收集,最终形成密码. 具体实现:     工程名:TestPictur…
本篇我们来学习WPF的绘图,在2D绘图中主要有这么几个重要的类:Drawing.Visual和Shape,顺便讲下Brush和BitmapEffect. 1 2D绘图 1.1Drawing类 Drawing类表示形状和路径的二维图,它继承自Animatable类,所以支持数据绑定.动画和资源引用等.它有这么几个子类: GeometryDrawing:包含Geometry.用于填充的Brush以及绘画轮廓的Pen(都是属性) ImageDrawing:包含ImageSource以及定义边界的Rec…
先说结论:实现了在自定义大小的窗口中,加载图片,并在图片上绘制一个矩形框:且在窗口大小改变的情况,保持绘制的矩形框与图片的先对位置不变. 在WinForm中,我们可以很方便地绘制自己需要的内容,在WPF中似乎被限制了,不能够很方便的使用:然后需求有总是奇葩的,所以在这里简单地总结一下. 在WinForm中,如果需要自己绘制,就需要拿到Graphics对象:同样的,我们就希望在WPF也得到一个其同样作用的对象,这个对象就是DrawingContext类的实例对象. 具体来说,就是要重载 UIEle…
前言 WPF是.NET最新的界面开发库,开发界面非常灵活!但是学习WPF难度也非常大. 应朋友之邀,编写了一个小程序.程序虽小,五脏俱全,WPF开发的灵活性可窥见一斑. 对于新手学习有很好的借鉴意义,代码已上传到CSDN可以下载.网址见文章底部. 功能说明 分析彩票的历史记录,根据选取的几个数据,分析记录出现的情况.看下图. 左边是历史记录,右边 是选取的数据 68. 8*.从历史记录查找,符合这个逻辑关系的数据. 技术解析 我这里分析几个小技术点. 1)ListView不同行颜色设定 List…
1.先来看看InkCanvas的一般用法: <InkCanvas>     <InkCanvas.DefaultDrawingAttributes>           <DrawingAttributes StylusTip="Ellipse" Height="8" Width="4" IgnorePressure="False" FitToCurve="True" >…
今天结合之前做过的一些拖拽的例子来对这个方面进行一些总结,这里主要用两个例子来说明在WPF中如何使用拖拽进行操作,元素拖拽是一个常见的操作,第一个拖拽的例子是将ListBox中的子元素拖拽到ListView的某一个节点,从而将该子元素作为当前节点的子节点.第二个例子就是将ListView的某一项拖拽到另外一项上从而使两个子项位置互换,这两个例子的原理类似,实现细节上有所差别,下面就具体分析一下这些细节. DEMO1 一 示例截图 图一 示例一截图 二 重点原理分析             2.1…
最近又开始跟WPF打交道,项目里面用到了TreeView这个控件.然后需要有一个连线的外观就像是这样 二话不说,百度了一下,找到一个实现, 通道. 把代码拷贝到项目里面,跑了一下,看上去还不错.但是这哥们的实现里面有一个缺陷.我们可以看到每个节点的最后的子节点前面的竖线,绘制方式跟其他的节点是有区别的,跟上图显示的一样. 拷贝的代码,在树中添加新的节点的时候,之前最后节点的"|_"这种风格的线在新节点插入后不会动态更新,还是会保持这种风格.这种风格在不需要改变节点的时候还是可以的,而需…
前言  凸度(bulge)是AutoCAD 中一个非常重要的概念,凸度控制着两点之间弧度大小,弧度的方向.各种复杂的图像有可能就是成百上千的弧线组成的.从AutoCAD中导出的数据也有该值,一般的形式为两个点坐标.一个凸度值.所以理解凸度的概念是处理AutoCAD 文件重要的前提.本文会简要介绍一下凸度的概念,同时会给出如何根据点坐标和凸度划线. 凸度演示程序 1 凸度的概念 凸度有两个作用控制顶点弧度的大小和弧度的方向.如果通过两个坐标点画弧,会有无数种可能性,所以必须引入第三个参数,来确定经…
最近看了一些科技感UI设计,其中很多的按钮都不是常见的圆角边,而是斜角边.查了一下,wpf中好像没有现成的斜角border,网上也没搜到现成的,于是自己写了点时间做了一个,写的较简单,有一些bug(主要是没有去管一些极值情况),但也基本可用了. 下面与大家分享一下代码: 先上效果: 前台代码: <Window.Resources> <Style TargetType="{x:Type local:BeveledBorder}"> <Setter Prope…
装饰器定义: 装饰器是一种特殊类型的 FrameworkElement,用于向用户提供可视化提示. 对于其他用户,装饰器可用于将功能控点添加到元素中或提供有关控件的状态信息. 装饰器可以在不改变原有的控件结构的基础上将功能控点添加到元素中或在界面元素上提供视觉效果等.如WPF中的光标效果.焦点效果等就是通过装饰器实现的.如图 通过WPF inspector看到的装饰器层及Button的默认Focus效果:             装饰器是一个始终位于装饰元素或装饰元素集合上方的呈现图面,其呈现独…
前言 WPF是.NET最新的界面开发库,开发界面非常灵活!但是学习WPF难度也非常大. 应朋友之邀,编写了一个小程序.程序虽小,五脏俱全,WPF开发的灵活性可窥见一斑. 对于新手学习有很好的借鉴意义,代码已上传到CSDN可以下载.网址见文章底部. 功能说明 分析彩票的历史记录,根据选取的几个数据,分析记录出现的情况.看下图. 左边是历史记录,右边 是选取的数据 68. 8*.从历史记录查找,符合这个逻辑关系的数据. 技术解析 我这里分析几个小技术点. 1)ListView不同行颜色设定 List…
今天研究了一下wpf的进度条ProgressBar 1.传统ProgressBar WPF进度条ProgressBar 这个控件,如果直接写到循环里,会死掉,界面会卡死,不会有进度.需要把进度条放到单独的线程中. 传统的需要建立 Thread 或者使用 Timer,分别写在不同的方法中.但现在,使用 Dispatcher.Invoke 调用可以实现这个目的. for (int i = 0; i <= 10000; i++)            {                double v…
一.绘制虚线的方法 GDI绘制,使用的是System.Drawing.Pen Pen pen = new Pen(Color.Red, 1);            pen.DashStyle = System.Drawing.Drawing2D.DashStyle.Custom;            pen.DashPattern = new float[] { 5, 5 };            Graphics gh = this.CreateGraphics();         …
原文:WPF文字描边的解决方法  由于项目原因,今天研究了一下午WPF的文字描边,网上这方面的资料奇少,搞了半天才发现强大的WPF原来不直接支持文字描边啊.最后求助于MSDN,找到了方案,和大家分享一下: 主要思路:用FormattedText将字符串转换为Geometry,再在重写的OnRender(DrawingContext drawingContext)方法中绘制Geometry.效果如图. 组件的主要属性: Text属性设置文字 Fill属性设置文本本身的画刷 Stroke属性是描…