绘制图片
请先打开CaseStyudy目录下的文件"PDFCreator示例.Table"后再运行本节的示例代码。
DrawImage方法用于绘制图片,语法为:
DrawImage(image, rect)
DrawImage(image, rect, align, sizeMode)
参数 | 说明 |
image | 要绘制的图片,可用GetImage函数从指定的图片文件中获得图片,如果文件已经事先复制到管理项目的Images子目录下,则只需指定文件名即可,否则需要包括路径。 |
rect | Rectangle类型,指定图片的绘制区域 |
align |
指定图片的对齐方式,ContentAlignment类型,可选值有:
TopLeft |
sizeMode |
ImageSizeModeEnum类型,指定图片的绘制方式,可选值有:
Clip:剪切图片。 |
示例一
Dim
file
As
String
=
"c:\temp\test.pdf"
Dim
pdc
As
New
PDFCreator()
Dim
rect
As
New
RectangleF(72, 72, 210, 120)
Dim
rectBorder
As
RectangleF = rect
rectBorder.Inflate(3, 3)
Dim
img
As
Image = GetImage("Fujiyama.png")
'常规绘制
pdc.DrawImage(img, rect)
pdc.DrawRectangle(pens.Red, rectBorder)
'拉伸绘制,常规绘制就是拉伸绘制
rect.Offset(250, 0)
rectBorder.Offset(250, 0)
pdc.DrawImage(img, rect, ContentAlignment.TopLeft,
PDF.ImageSizeModeEnum.Stretch)
pdc.DrawRectangle(pens.Red, rectBorder)
'按比例缩放绘制
rect.Offset( - 250, rect.Height + 20)
rectBorder.Offset( - 250, rect.Height + 20)
pdc.DrawImage(img, rect, ContentAlignment.MiddleCenter,
PDF.ImageSizeModeEnum.Scale)
pdc.DrawRectangle(pens.Red, rectBorder)
'剪切绘制
rect.Offset(250, 0)
rectBorder.Offset(250, 0)
pdc.DrawImage(img, rect, ContentAlignment.TopLeft, PDF.ImageSizeModeEnum.Clip)
pdc.DrawRectangle(pens.Red, rectBorder)
pdc.Save(file)
Process.Start(file)
生成的文档为:
示例二
如果希望按照图片的实际大小绘制,可以通过Image对象的Width和Height属性获得图片的宽和高,需要注意的是,图片的宽和高的单位是像素,而PDFCreator使用的单位是磅。
那么像素如何转转为磅呢,SysInfo有两个属性ScreenDpiX和ScreenDpiY,分别返回屏幕在水平和垂直方向一英寸包括多少个像素,而1英寸有72磅。
所以按实际大小绘制图片的代码可以参考:
Dim
file
As
String
=
"c:\temp\test.pdf"
Dim
pdc
As
New
PDFCreator()
Dim
rect
As
RectangleF = pdc.PageRectangle
rect.Inflate( - 72, - 72)
Dim
img
As
Image = GetImage("Fujiyama.png")
rect.Width = img.Width / SysInfo.ScreenDpiX * 72
'计算以磅为单位的宽度
rect.Height = img.Height / SysInfo.ScreenDpiY * 72
'计算以磅为单位的高度
pdc.DrawImage(img, rect)
'绘制图片
pdc.Save(file)
Process.Start(file)
'打开文件