GIS程序设计(二)绘制简单图形
1、打开新建的MFC程序,打开ClassView视图,展开CDrawView,双击OnDraw,进入函数体
2、在函数体中加入以下代码
①CPen(Int style,int width ,COLORREF color);
style:画笔的样式
width:画笔的宽度
color:画笔的颜色(颜色用RGB值来描述)
②CPen * pOldPen=pDC->SelectObject (&newPen);
在将新对象选进设备环境的同时返回指向前一次被选对象的指针。作用保存原来的对象,以便完成任务时恢复它。
CPen *pOldPen=pDC->SelectObject(&Pen);把画笔(Pen)与DC关联,并返回原来与DC关联的画笔。所以pDC->SelectObject(&Pen)返回的并不是&Pen,而是原来与之关联的画笔。
3、画多边形,并进行填充
①CreatePolygonRgn( LPPOINT lpPoints, int nCount, int nMode)
lpPoint -------- POINTAPI,nCount个POINTAPI结构中的第一个POINTAPI结构
nCount --------- Long,多边形的点数
nPolyFillMode -- Long,描述多边形填充模式。可为ALTERNATE 或 WINDING常数
②BOOL FillRgn(CRgn* pRgn, CBrush* pBrush);
4、画矩形
5、绘制文字
①BOOL CreateFont(
int nHeight,
int nWidth,
int nEscapement,
int nOrientation,
int nWeight,
BYTE bItalic,
BYTE bUnderline,
BYTE cStrikeOut,
BYTE nCharSet,
BYTE nOutPrecision,
BYTE nClipPrecision,
BYTE nQuality,
BYTE nPitchAndFamily,
LPCTSTR lpszFacename
);
参数详解:
nHeight:指定字体的字符单元或字符的逻辑单位高度。
nWidth:指定所要求字体的字符的逻辑单位的平均宽度。如果此值为0,字体映射器选择一个closest match值,closest match值是由比较当前设备的特征系数与可使用字体的数字化特征系数之差的绝对值而确定的。
nEscapement:指定移位向量和设备X轴之间的一个角度,以十分之一度为单位。移位向量平行于正文行的基线。
nWeight:指定字体粗细。在0到1000之间指定字体的权值,如400表示标准体,700表示黑(粗)体,如果此值为0,则使用缺省的权值。下列值是预定义:FW_DONTCARE:0;FW_THIN;100;FW_EXTRALIGHT;200;FW_ULTRALIGHT;200;FW_LIGHT;300;FW_NORMAL:400;FW_MEDIUM;500;FW_SEMIBOLD;600;FW_DEMIBOLD;600;FW_BOLD:700;FW_EXTRABOLD;800;FW_BLACK;900。
nOrientation:指定每个字符的基线和设备X轴之间的角度。
bItalic:指定字体是否为斜体。如果设置为TRUE,则字体设置为斜体。
bUnderline:指定字体是否加下划线。如果设置为TRUE,则字体增加下划线。
cStrikeOut:指定字体是否加删除线。如果设置为TRUE,则字体增加删除线。
nCharSet::指定字符集。OEM_CHARSET指定的字符集与操作系统有关。可以使用DEFAULT_CHARSET值来允许字体的名字和大小来充分描述逻辑字体。如果指定的字体名不存在,任何字符集的字体都可以替代指定的字体,所以应该小心地用DEFAULT_CHARSET来避免不期望的结果出现。
nOutPrecision:指定输出精度,输出精度定义的输出必须密切匹配请求的字体的高度、宽度、字符定位、移位、字符间距和字符类型。
nClipPrecision:指定裁剪精度,裁剪精度定义如何裁剪部分超出裁剪区的字符。
nQuality:指向输出质量,输出质量定义GDI如何仔细地将逻辑字体属性与实际物理字体属性相匹配。
nPitchAndFamily:指定字体间距和系列,低端二位指定字体的字符间距。
lpszFacename:字体名称。指向指定字体的字样名的、以\0结束的字符串指针,字符串的长度不能超过32个字符(包括字符\0),函数EnumFontFamilies可用来列举所有当前可用字体的字样名。 如果 lpszFacename 是 NULL,GDI使用与设备无关的字样。
② virtual BOOL TextOut(int x, int y, LPCTSTR lpszString, int nCount);
BOOL TextOut(int x, int y, const CString& str);
地理信息科学
Writed By NX
QQ:1051926720