画笔的使用

转载 2011年01月17日 16:40:00

1. 画笔的构造:
画笔的构造函数有:
CPen();
CPen( int nPenStyle, int nWidth, COLORREF crColor );  throw( CResourceException );
CPen( int nPenStyle, int nWidth , const LOGBRUSH* pLogBrush, int nStyleCount =0,        const DWORD* lpStyle = NULL ); throw( CResourceException );
参数说明:
1.  NPenStyle::指定画笔的风格。可以有如下的值,
PS_SOLID  创建一支实线画笔。l
PS_DASH  创建一支虚线画笔。只有当画笔宽度为1或更小(以设备单位计算)时才有效。
PS_DOT   创建一支点线画笔。只有当画笔宽度为1或更小(以设备单位计算)时才有效。
PS_DASHDOT  创建一支虚线和点交替的画笔。只有当画笔宽度为1或更小(以设备单位计算)时才有效。
PS_DASHDOTDOT  创建一支虚线和两点交替的画笔。只有当画笔宽度为1或更小(以设备单位计算)时才有效
PS_NULL  创建一支空画笔。
PS_INSIDEFRAME  创建一支画笔,该画笔在Windows GDI输出函数所产生的封闭形状的框架内画线,此输出函数指定一个限定矩形(例如,Ellipse,Rectangle,RoundRect,Pie和Chord成员函数),当此风格用于没有指定限定矩形的Windows GDI输出函数(例如LineTo成员函数)时,此画笔的绘制区域不受框架的限制。
2.  NWidth:指定画笔的宽度。
宽度大于1个像素的画笔总是具有PS_NULL,PS_SOLED或PS_INSIDEFRAME风格。
3.  CrColor:包含了画笔的RGB值。
例子:在视图的OnDraw(CDC *pDC)中加入:
CPen pen(PS_SOLID,2,RGB(122,122,122)) ;
PDC->SelectObject(&pen);
PDC->LineTO(100,100);
PDC->MoneTo(200,200);
如果画笔具有PS_INSIDEFRAME风格和某一不匹配逻辑调色板中颜色的颜色,则此画笔用一个混合色来进行绘制。PS_SOLID画笔风格不能用一个混合色来创建一支画笔。当画笔的宽度小于或等于1时,PS_INSIDEFRAME风格等同于PS_SOLID风格
2. 使用CreatePen,CreatePenIndirect或CreateStockObject成员函数来初始化所生成的CPen对象。
3. BOOL CreatePen( int nPenStyle, int nWidth, COLORREF cfColor );
BOOL CreatePen( int nPenStyle, int nWidth, const LOGBRUSH* pLogBrush,    int nStyleCount = 0, const DWORD* lpStyle = NULL );
参数同上。
 
API函数:
   HPEN CreatePen(
  int fnPenStyle,    // pen style
  int nWidth,        // pen width
  COLORREF crColor   // pen color
);
应用1:
CPen Pen;
Pen.CreatePen(PS_DOT,0.5,RGB(100,100,100));
PDC->SelectObject(&pen);
PDC->Rectangle(0,0,200,200);
应用2:
HPEN hPen;
HPen = ::CreatePen(PS_DOT,0.5,RGB(100,100,100));
HDC hdc = ::GetDC(this->m_hWnd);
::SelectObject(hdc,hPen);
:: Rectangle(hdc,0,0,200,200);
::ReleaseDC(this->m_hWnd);
 
4. BOOL CreatePenIndirect( LPLOGPEN lpLogPen );
LpLogPen:指向Windows LOGPEN结构,此结构包含了此画笔的信息
         
typedef struct tagLOGPEN {  /* lgpn */
UINT     lopnStyle;
POINT    lopnWidth;
COLORREF lopnColor;
} LOGPEN;
 
当创建好画笔之后可以使用函数int GetLogPen( LOGPEN* pLogPen )或
int GetObject(
  HGDIOBJ hgdiobj,  // handle to graphics object of interest
  int cbBuffer,     // size of buffer for object information
  LPVOID lpvObject  // pointer to buffer for object information
);来取得画笔的信息
 
下面以已经创建好的话笔来创建一只新的画笔:
    LOGPEN logpen;
penExisting.GetLogPen( &logpen );
CPen penOther( PS_SOLID, 0, logpen.lopnColor );
5. BOOL CreateStockObject( int nIndex );
API函数
HGDIOBJ GetStockObject(
         int fnObject   // type of stock object
);
主要有几种系统已经定义好的画笔BLACK_PEN,DC_PEN,WHITE_PEN

相关文章推荐

Paint(画笔)类的使用

Paint类继承关系: Paint类说明:     配合Canvas类使用的一个类,用来给Canva将要绘制的图形添加一些属性,例如:抗锯齿(AntiAlias)、透明度(Al...

android 画笔和画布的使用,实现类似360清除内存的画面

代码上已经写好了注释, 因时间关系只写了关键部分的注释,如有不理解的可以给我留言, 我会帮你解读的。 //UI类 package com.example.atest_rectui.widget; ...

Photoshop学习(一)Photoshop简介及新建图像以及画笔使用

摘要:本篇博客将对PS软件、处理图像机理作简单介绍,并且涉及简单的新建、画笔等功能。

画笔的使用 .

1. 画笔的构造: 画笔的构造函数有: CPen(); CPen( int nPenStyle, int nWidth, COLORREF crColor );  throw( CResourc...

绘图不可或缺的画笔Paint-使用篇

前言 在Android中需要通过graphics类来显示2D图形,在Graphics中包括了Canvas(画布)、Paint(画笔)、Color(颜色)、Bitmap(图像)等常用的类。Paint在自...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)