Direct2D 第6篇 绘制多种风格的线条
上图是使用Direct2D绘制的线条,Direct2D在效率上比GDI/GDI+要快几倍,GDI/GDI+绘图是出了名的“慢”,不过Direct2D的绘制线条代码,要比GDI/GDI+要繁锁一些。
1.首先,初始化Direct2D(可以参考 http://blog.csdn.net/ubuntu_ai/article/details/50365536 )
2.创建线条的风格实例 ID2D1StrokeStyle,以下函数CreateStrokeStyle是创建ID2D1StrokeStyle的接口,它的声明大致如下:
virtual HRESULT CreateStrokeStyle(
const D2D1_STROKE_STYLE_PROPERTIES *strokeStyleProperties,
const FLOAT *dashes,
UINT dashesCount,
ID2D1StrokeStyle **strokeStyle
);
你可以这样创建一个ID2D1StrokeStyle实例
ID2D1StrokeStyle * g_stroke_style; // 声明线条风格接口
g_pD2DFactory->CreateStrokeStyle(D2D1::StrokeStyleProperties(
D2D1_CAP_STYLE_ROUND,
D2D1_CAP_STYLE_ROUND,
D2D1_CAP_STYLE_ROUND,
D2D1_LINE_JOIN_MITER,
1.0f,
D2D1_DASH_STYLE_SOLID, // 有多种风格可以设置(dash,dot....)
10.0f),
NULL,
0,
&g_stroke_style);
3. 绘制线条
在你的绘制函数中写下以下代码,此处brush我没有创建,不懂如何创建的可以参考 <a target=_blank href="http://blog.csdn.net/ubuntu_ai/article/details/50365818">点击打开链接</a> http://blog.csdn.net/ubuntu_ai/article/details/50365818
D2D1_POINT_2F p1={20.0f, 20.0f};
D2D1_POINT_2F p2={600.0f, 20.0f};
g_pD2DHwndRenderTarget->DrawLine(p1, p2, brush, 3.0f, g_stroke_style);
4.释放你的资源
前面你创建了g_stroke_style,在Direct2D中,几乎所有创建的资源都需要释放,否则后果会导致内存泄漏(后果会怎样我也不知道)
这样释放你的资源
#define SafeRelease(p) if(p){ p->Release(); p = NULL; }
SafeRelease(g_stroke_style)
作者已经用VS编译一个实例,存放在我的【资源】当中,有必须的可以前往下载
点击打开链接 http://download.csdn.net/detail/ubuntu_ai/9386783
Direct2D 第6篇 绘制多种风格的线条的更多相关文章
- Direct2D 第5篇 绘制图像
原文:Direct2D 第5篇 绘制图像 我加载的图像是一张透明底PNG图像,背景使用渐变的绿色画刷 #include <windows.h> #include <d2d1.h> ...
- Direct2D 第3篇 绘制文字
原文:Direct2D 第3篇 绘制文字 #include <windows.h> #include <d2d1.h> #include <d2d1helper.h> ...
- Direct2D 第2篇 绘制椭圆
原文:Direct2D 第2篇 绘制椭圆 #include <windows.h> #include <d2d1.h> #include <d2d1helper.h> ...
- C# 如何在PDF中绘制不同风格类型的文本
通过对控件Spire.PDF的测试,我们可以创建PDF文件并向文档中绘制文本.图片.表格.图形等内容,其中,对于绘制文本这一部分,Spire.PDF提供了三种字体类型来绘制文本,即: Standard ...
- PPT分享第01季-226套多种风格模板
包含商务欧美扁平风.唯美文艺IOS风.互联网计划书风.扁平风手绘风卡通风 .中国风等多种风格 下面是部分模板截图: 下面是下载地址
- Direct2D 第4篇 渐变画刷
原文:Direct2D 第4篇 渐变画刷 #include <windows.h> #include <d2d1.h> #include <d2d1helper.h> ...
- Direct2D 第1篇 最简单的D2D程序
原文:Direct2D 第1篇 最简单的D2D程序 编译之前,得先安装DirectX SDK #include <windows.h> #include <d2d1.h> #i ...
- C# winform如何清除由Graphics类绘制出来的所有线条或图形
在C#winform应用程序中,可以用GDI绘制出线条或图形. 1.在主窗体上绘制线条或图形 using (Graphics g = this.CreateGraphics()) { ...
- IOS 中openGL使用教程2(openGL ES 入门篇 | 绘制一个多边形)
在上一篇我们学习了如何搭建IOS下openGL的开发环境,接下来我们来学习如何绘制一个多边形. 在2.0之前,es的渲染采用的是固定管线,何为固定管线,就是一套固定的模板流程,局部坐标变换 -> ...
随机推荐
- VS2005下安装boost
本文参照http://dxwang.blog.51cto.com/384651/711798 (一)boost的安装和编译 1:下载boost版本,目前最新的版本为1-47-0 下载地址为htt ...
- python print输出format太好用了
不用担心什么其他的东西了,直接用format: print("{}的Ground,Detected,DetectedRight个数分别为{},{},{},".format(cate ...
- Create STKNetDiskC Instance Error
关于Create STKNetDiskC Instance Error错误的解决方法 这个错误可能出现在: AM8 附件直接存网盘的时候 报错 解决方法步骤如下: 在出现该错误的机器上,先将AM及 m ...
- Nginx简介与基础配置
何为Nginx? Nginx ("engine x") 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器.最初是为了解决C10k的问题,由Igor ...
- JavaSE_01_Exception类
1.1 异常概念 指的是程序在执行过程中,出现的非正常的情况,最终会导致JVM的非正常停止. 在Java等面向对象的编程语言中,异常本身是一个类,产生异常就是创建异常对象并抛出了一个异常对象.Java ...
- c语言学习笔记 函数数组传递笔记
今天学习c语言的一个小例子,果然还是陷入了php的编程习惯里,这里记录一下. #include <stdio.h> //例子很简单,就是编写一个函数把传递进来的数组里的值都赋值为1而已 / ...
- [转]SQLserver字符串分割函数
一.按指定符号分割字符串,返回分割后的元素个数,方法很简单,就是看字符串中存在多少个分隔符号,然后再加一,就是要求的结果. CREATE function Get_StrArrayLength ( ) ...
- [Array]283. Move Zeroes
Given an array nums, write a function to move all 0's to the end of it while maintaining the relativ ...
- bzoj 1029 [JSOI2007]建筑抢修——贪心(伪dp)
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1029 当然要按结束时间排序,然后按顺序修或跳过.就是那种“……不会使答案不优”的证明. 想了 ...
- PHP与RBAC设计思路讲解与源码
在说权限管理前,应该先知道权限管理要有哪些功能: (1).用户只能访问,指定的控制器,指定的方法 (2).用户可以存在于多个用户组里 (3).用户组可以选择,指定的控制器,指定的方法 (4).可以添加 ...