创建和使用画笔

面的绘图使用的是Windows的默认画笔,也就是宽度为1个像素,颜色为黑色的画笔。我们也可以创建自己的画笔。

创建画笔的API函数为 CreatePen:

HPEN CreatePen(http://www.amjmh.com/v/BIBRGZ_558768/)
int nPenStyle, //画笔的样式
int nWidth, //画笔的宽度
COLORREF crColor //画笔的颜色
);
1
2
3
4
5
画笔样式 nPenStyle 有7种取值:

画笔宽度 nWidth 指逻辑宽度。iWidth为 0 则意味着画笔宽度为一个像素。如果画笔样式为点线或者虚线,同时又指定一个大于 1 的画笔宽度,那么Windows将使用实线画笔来代替。

画笔的颜色 crColor 可以直接使用 RGB 颜色。RGB 是一种标准颜色,通过红®、绿(G)、蓝(B)三原色的叠加得到各种不同的颜色。

CreatePen 函数在创建画笔时并没有指定设备环境,也就是说,新创建的画笔与当前设备环境并没有关联,无法使用。

画笔、画刷、字体等被称为GDI对象。可以将GDI对象理解为工具,可以供 GDI 函数使用。新创建的 GDI 对象必须通过 SelectObject 函数选入设备环境才能使用。

SelectObject 函数将GDI对象与设备环境关联起来,它的原型为:

HGDIOBJ SelectObject(
HDC hdc, //设备环境句柄
HGDIOBJ ho //GDI对象句柄
);
---------------------

原文地址:https://www.cnblogs.com/ly570/p/11304714.html

时间: 2024-11-05 15:52:55

创建和使用画笔的相关文章

Wince -06设备环境和画笔应用

本文主要讲到的是画笔应用,在Wince -06环境下,画笔应用很广泛,很有技巧,这里笔者要着重介绍. 设备环境可以用一下图表示,主要是让大家大致了解Wince -06的设备环境,下面在图形舍虚设计中会用到. 画笔颜色的表示: 颜色用COLORREF类型标识 PGR(cRed,cGreen,cBlue)给COLORREF赋值: 这里一般英文前面都加一个小写字母,而相应的单词首字母是大写.(这里涉及到匈牙利命名法) 取值范围为0~255之间,举例: RGB(0X00,0X00,00)------表示

VB中的GDI编程-2 画笔

p{ font-size: 15px; } .alexrootdiv>div{ background: #eeeeee; border: 1px solid #aaa; width: 99%; padding: 5px; margin: 1em 0 1em 0; } .alextitlep{ font-size: 18px; font-weight: bold; color: red; } .alexrootdiv span{ color:blue;font-weight:bold; } .al

如何解决在GDI画图中,多次修改画笔的颜色

首先创建个画笔对象: CPen gPen;gPen.CreatePen(PS_SOLID, 1, RGB(120,120,130));//一定灰度的画笔CPen* pOldPen = pDC->SelectObject(&gPen); 由于画笔一旦创建后就无法修改.所以要修改画笔的颜色要用DeleteObject函数将其删除?,之后再创建新的画笔. 下面是修改为红色的画笔: gPen.DeleteObject();gPen.CreatePen(PS_SOLID,1, RGB(255, 0,

Windows应用程序

  Windows应用程序是由一系列的消息处理 代码来实现的.这和传统的过程式编程方法很不一样,编程者只能够 预测用户所利用应用程序用户界面对象所进行的操作以及为这些操作 编写处理代码,却不可以这些操作在什么时候发生或者是以什么顺序 来发生,也就是说,我们不可能知道什么消息会在什么时候以什么顺 序来临. Windows应用程序基本流程:   Windows API:(windowsAppliacation Programming Interface. Windows 应用程序编程接口), API

Android自定义控件系列案例【四】

案例效果: 模拟器上运行有些锯齿,真机上和预期一样好 案例分析: 看效果,第一直觉肯定是Android原生态控件中没有这样的控件实现这种效果,自然想到应该需要自定义控件了,没错,这就是通过自定义控件来绘制的一个圆环进度条.仔细分析发现这个效果的进度条应该由几个部分组成,首先是无进度时的浅色圆环,然后是一个随进度变化的深色圆弧,而中间部分是一个深蓝色的实心圆,最后就是显示进度百分比的文字.这几部分大部分都是图形,所以使用图形绘制技术应该可以绘制出分部分效果,然后加上进度控制部分应该心里就有底了.

Qt 学习之路:Canvas

在 QML 刚刚被引入到 Qt 4 的那段时间,人们往往在讨论 Qt Quick 是不是需要一个椭圆组件.由此,人们又联想到,是不是还需要其它的形状?这种没玩没了的联想导致了一个最直接的结果:除了圆角矩形,Qt Quick 什么都没有提供,包括椭圆.如果你需要一个椭圆,那就找个图片,或者干脆自己用 C++ 写一个吧(反正 Qt Quick 是可以扩展的,不是么)! 为了使用脚本化的绘图机制,Qt 5 引入的Canvas元素.Canvas元素提供了一种与分辨率无关的位图绘制机制.通过Canvas,

Win32中GDI+应用(五)--GDI与GDI+编程模型的区别

在GDI里面,你要想开始自己的绘图工作,必须先获取一个device context handle,然后把这个handle作为绘图复方法的一个参数,才能完成任务.同时,device context handle是同一定的绘图属性绑定在一起的,诸如画笔.话刷等等,你必须在画线之前创建自己的画笔,然后使用selectObject方法把这个画笔同已经获取的device context handle绑定,才能使用LineTo等方法开始画线.不然,你画出来的线使用的是默认的属性:宽度(1),颜色(黑色).但

C++入门

  C++入门必看,提升必看 Visual C++MFC入门教程 目录 +-- 第一章 VC入门|------ 1.1 如何学好VC|------ 1.2 理解Windows消息机制|------ 1.3 利用Visual C++/MFC开发Windows程序的优势|------ 1.4 利用MFC进行开发的通用方法介绍|------ 1.5 MFC中常用类,宏,函数介绍+-- 第二章 图形输出|------ 2.1 和GUI有关的各种对象|------ 2.2 在窗口中输出文字|------

Android中Canvas绘图之Shader使用图文详解

概述 我们在用Android中的Canvas绘制各种图形时,可以通过Paint.setShader(shader)方法为画笔Paint设置shader,这样就可以绘制出多彩的图形.那么Shader是什么呢?做过GPU绘图的同学应该都知道这个词汇,Shader就是着色器的意思.我们可以这样理解,Canvas中的各种drawXXX方法定义了图形的形状,画笔中的Shader则定义了图形的着色.外观,二者结合到一起就决定了最终Canvas绘制的被色彩填充的图形的样子. 类android.graphics