绘制图片

请先打开CaseStyudy目录下的文件"PDFCreator示例.Table"后再运行本节的示例代码。

DrawImage方法用于绘制图片,语法为:

DrawImage(image, rect)
DrawImage(image, rect, align, sizeMode)

参数 说明
image 要绘制的图片,可用GetImage函数从指定的图片文件中获得图片,如果文件已经事先复制到管理项目的Images子目录下,则只需指定文件名即可,否则需要包括路径。
rect Rectangle类型,指定图片的绘制区域
align 指定图片的对齐方式,ContentAlignment类型,可选值有:

TopLeft
TopCenter
TopRight
MiddleLeft
MiddleCenter
MiddleRight
BottomLeft
BottomCenter
BottomRight

sizeMode ImageSizeModeEnum类型,指定图片的绘制方式,可选值有:

Clip:剪切图片。
Stretch:拉伸图片
Scale:按比例缩放图片

示例一

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)
p
dc.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)
'打开文件


本页地址:http://www.foxtable.com/webhelp/topics/6084.htm