GDI继Graphics的学习2

Graphics绘制图片
DrawImage(Image* image,const Point& point);
DrawImage(Image* image,INT x,INT y);
DrawImage(Image* image, const PointF& point)
DrawImage(Image* image, REAL x, REAL y);

其中x,y为要绘制的位置,可为INT类型,也可为REAL类型。
point为要绘制的位置的结构体变量,可为Point类型(内部成员为INT类型),也可为PointF类型(内部成员为REAL类型)。

DrawImage(Image* image, const Rect& rect);
DrawImage(Image* image, INT x, INT y, INT width, INT height);
DrawImage(Image* image, const RectF& rect);
DrawImage(Image* image, REAL x, REAL y, REAL width, REAL height);

其中x,y为指定矩形区域的坐上角坐标,可为INT类型,也可为REAL类型。
width,height为指定矩形区域的宽度与高度,可为INT类型,也可为REAL类型。
rect为指定的矩形区域,可为Rect类型(内部成员为INT类型),也可为RectF类型(内部成员为REAL类型)。

DrawImage(Image* image, const Rect& destRect, INT srcx, INT srcy, INT srcwidth, INT srcheight, Unit srcUnit);
DrawImage(Image* image, const RectF& destRect, REAL srcx, REAL srcy, REAL srcwidth, REAL srcheight, Unit srcUnit);

destRect为指定目标区域。可为Rect类型(内部成员为INT类型),也可以RectF类型(内部成员为REAL类型)。
srcx,srcy为图片指定区域的左上角的坐标,可为INT类型,也可为REAL类型。

Graphics绘制文字
DrawString(const WCHAR *string, INT length, const Font *font, const PointF &origin, const Brush *brush);
DrawString(const WCHAR *string, INT length, const Font *font, const RectF &layoutRect, const StringFormat *stringFormat, const Brush *brush);
DrawString(const WCHAR *string, INT length, const Font *font, const PointF &origin, const StringFormat *stringFormat, const Brush *brush);

其中:
string为要绘制的字符串,类型为const WCHAR*,宽字符指针。
length为要绘制的字符串的长串,如果该值为-1,表明绘制以NULL结尾的string字符串。
font为要绘制的文本所使用的字体。比如Font myFont(L"宋体", 16);,宋体,字体大小为16号。
layoutRect为文本输出的矩形区域。
origin为文本的绘制起点位置,数据类型是PointF。
stringFormat为文本输出的格式,数据类型是StringFormat*。
brush为绘制文本所使用的画刷。

实例:

    Gdiplus::Font myFont(L"Arial", 16);
    RectF layout(0, 0, 500.0f, 200.0f);
    //设置对齐方式(水平居中对齐)
    StringFormat format;
    format.SetAlignment(StringAlignmentCenter);
    SolidBrush brushB(Color(255,0,0,255));
    graphics.DrawString(L"示例文本", -1, &myFont, layout, &format, &brushB);

Graphics绘制直线
DrawLine(const Pen* pen, INT x1, INT y1, INT x2, INT y2);
DrawLine(const Pen* pen,const Point& pt1, const Point& pt2);
DrawLine(const Pen* pen, REAL x1,REAL y1,REAL x2,REAL y2);
DrawLine(const Pen* pen,const PointF& pt1,const PointF& pt2);

其中:
pen为GDI+的画笔。
x1,y1为直线的起点坐标,可为INT类型,也可为REAL类型。
X2,Y2为直线的终点坐标,可为INT类型,也可为REAL类型。
pt1为直线的起点坐标,可为Point类型,也可为PointF类型。
Pt2为直线的起点坐标,可为Point类型,也可为PointF类型。

Graphics绘制矩形
DrawRectangle( const Pen* pen, INT x, INT y, INT width, INT height);
DrawRectangle( const Pen* pen, const Rect& rect );
DrawRectangle( const Pen* pen, REAL x, REAL y, REAL width, REAL height);
DrawRectangle( const Pen* pen, const RectF& rect );

其中:
pen为GDI+的画笔。
x,y为矩形的左上角坐标位置,可为INT类型,也可为REAL类型。
width,height为矩形的宽度与高度,可为INT类型,也可为REAL类型。
rect为矩形的区域,可为Rect类型(内部成员是INT类型),也可为RectF类型(内部成员是REAL类型)。

Graphics绘制圆
DrawEllipse(const Pen* pen, INT x, INT y, INT width, INT height);
DrawEllipse(const Pen* pen, const Rect& rect);
DrawEllipse(const Pen* pen, REAL x, REAL y, REAL width, REAL height);
DrawEllipse(const Pen* pen, const RectF& rect);

其中:
pen为GDI+的画笔。
x为圆的外切矩形的左上角x坐标,可为INT类型,也可为REAL类型。
y为圆的外切矩形的左上角y坐标,可为INT类型,也可为REAL类型。
width为圆的外切矩形的宽度,可为INT类型,也可为REAL类型。
height为圆的外切矩形的高度,可为INT类型,也可为REAL类型。
rect为圆的外切矩形,可为Rect类型,也可为RectF类型。

Graphics绘制饼
DrawPie(const Pen* pen, INT x, INT y, INT width, INT height, REAL startAngle, REAL sweepAngle);
DrawPie(const Pen* pen, const Rect& rect, REAL startAngle, REAL sweepAngle);
DrawPie(const Pen* pen, REAL x, REAL y, REAL width, REAL height, REAL startAngle, REAL sweepAngle);
DrawPie(const Pen* pen, const RectF& rect, REAL startAngle, REAL sweepAngle);

其中:
pen为GDI+的画笔。
x为饼的限定矩形的左上角坐标X,可为INT类型,也可为REAL类型。
y为饼的限定矩形的左上角坐标Y,可为INT类型,也可为REAL类型。
width为饼的限定矩形的宽度,可为INT类型,也可为REAL类型。
height为饼的限定矩形的高度,可为INT类型,也可为REAL类型。
rect为饼的限定矩形,可为Rect类型,也可为RectF类型。
startAngle为饼在圆中的起始角度。
sweepAngle为饼角的角度。

Graphics填充矩形
FillRectangle( const Brush* brush, INT x, INT y, INT width, INT height);
FillRectangle( const Brush* brush, const Rect& rect );
FillRectangle( const Brush* brush, REAL x, REAL y, REAL width, REAL height);
FillRectangle( const Brush* brush, const RectF& rect );

其中:
brush为GDI+的画刷。
x,y为矩形的左上角坐标位置,可为INT类型,也可为REAL类型。
width,height为矩形的宽度与高度,可为INT类型,也可为REAL类型。
rect为矩形的区域,可为Rect类型(内部成员是INT类型),也可为RectF类型(内部成员是REAL类型)。

Graphics填充圆
FillEllipse(const Brush* brush, INT x, INT y, INT width, INT height);
FillEllipse(const Brush* brush, const Rect& rect);
FillEllipse(const Brush* brush, REAL x, REAL y, REAL width, REAL height);
FillEllipse(const Brush* brush, const RectF& rect);

其中:
brush为GDI+的画刷。
x为圆的外切矩形的左上角x坐标,可为INT类型,也可为REAL类型。
y为圆的外切矩形的左上角y坐标,可为INT类型,也可为REAL类型。
width为圆的外切矩形的宽度,可为INT类型,也可为REAL类型。
height为圆的外切矩形的高度,可为INT类型,也可为REAL类型。
rect为圆的外切矩形,可为Rect类型,也可为RectF类型。

Graphics填充饼
FillPie(const Brush* brush, INT x, INT y, INT width, INT height, REAL startAngle, REAL sweepAngle);
FillPie(const Brush* brush, const Rect& rect, REAL startAngle, REAL sweepAngle);
FillPie(const Brush* brush, REAL x, REAL y, REAL width, REAL height, REAL startAngle, REAL sweepAngle);
FillPie(const Brush* brush, const RectF& rect, REAL startAngle, REAL sweepAngle);

其中:
brush为GDI+的画刷。
x为饼的限定矩形的左上角坐标X,可为INT类型,也可为REAL类型。
y为饼的限定矩形的左上角坐标Y,可为INT类型,也可为REAL类型。
width为饼的限定矩形的宽度,可为INT类型,也可为REAL类型。
height为饼的限定矩形的高度,可为INT类型,也可为REAL类型。
rect为饼的限定矩形,可为Rect类型,也可为RectF类型。
startAngle为饼在圆中的起始角度。
sweepAngle为饼角的角度。

GDI的设备描述表DC与GDI+的Graphics的作用与区别:
DC:现在大家已经用GDI编写过应用程序了,对设备描述表(DC)的概念比较熟悉,设备描述表是Windows使用的一个数据结构,用于存储具体设备能力和与如何在设备上重绘一些项目有关的属性信息。首先你必须获得一个设备描述表句柄,然后在图形绘制时,你把这个句柄作为一个参数传递给GDI图形绘制函数。当然你也可以把它传递给获得或设置设备描述表有关属性的函数。

GDI+在GDI的设备环境DC上进行图形的绘制
Graphics gs(hDC);
其中参数hDC就是GDI的设备环境DC。
GDI+就会把当前的hDC作为默认的目标画布,之后调用Graphics中的任何函数都会被绘制到hDC上。当然每个函数的调用完成并不会立即反映在hDC中。只有当Graphics类析构的时候才会把所有绘制的内容全部一次性地拷贝到hDC中。

GDI在GDI+的Graphics上面进行图形的绘制
Graphics提供了获得HDC的函数:GetHDC(), 这样我们就可以在hDC上进行GDI函数的绘制了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值