用VB程序生成的图形如何控制图形像素大小

qq_38357996 2017-10-11 12:33:16
运用VB画图形,想要控制画好的图形的像素大小程序怎么写呢?例如我想生成像素为799×1159大小的图形以bmp格式保存,向各位大神求救
...全文
678 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
熊孩子开学喽 2017-10-18
  • 打赏
  • 举报
回复
1: 设置picturebox的scalemode为pixel 2: 设置picturebox的边框为无边框 3:调整picturebox的大小为你需要的尺寸 4:用savepicture命令保存图片
舉杯邀明月 2017-10-13
  • 打赏
  • 举报
回复
引用 4 楼 VBToy 的回复:
将放置picturebox的容器如窗体以及picturbox,scalemode设置成pixels,pictureBox 的width和height设置成需要的像素,这样就可以按像素绘制需要的尺寸的图形了。
是我失误了。 不过你设置Width和Height,它的Image还要除开“边框”占用的像素。 只有把控件设置为无边框的时候,Image的宽和高才能跟控件的宽和高一致。
赵4老师 2017-10-12
  • 打赏
  • 举报
回复
SavePicture 语句示例
本例使用 SavePicture 语句保存画在 Form 对象的 Picture 属性中的图形。要试用此例,可将以下代码粘贴到 Form 对象的声明部分,然后运行此例,单击 Form 对象。

Private Sub Form_Click ()
   ' 声明变量。
   Dim CX, CY, Limit, Radius   as Integer, Msg as String
   ScaleMode = vbPixels   ' 设置比例模型为像素。
   AutoRedraw = True ' 打开 AutoRedraw。
   Width = Height   ' 改变宽度以便和高度匹配。
   CX = ScaleWidth / 2   ' 设置 X 位置。
   CY = ScaleHeight / 2   ' 设置 Y 位置。
   Limit = CX   ' 圆的尺寸限制。
   For Radius = 0 To Limit   ' 设置半径。
      Circle (CX, CY), Radius, RGB(Rnd * 255, Rnd * 255, Rnd * 255)
      DoEvents   ' 转移到其它操作。
   Next Radius
   Msg = "Choose OK to save the graphics from this form "
   Msg = Msg & "to a bitmap file."
   MsgBox Msg
   SavePicture Image, "TEST.BMP"   ' 将图片保存到文件。
End Sub

VBToy 2017-10-11
  • 打赏
  • 举报
回复
将放置picturebox的容器如窗体以及picturbox,scalemode设置成pixels,pictureBox 的width和height设置成需要的像素,这样就可以按像素绘制需要的尺寸的图形了。
VBToy 2017-10-11
  • 打赏
  • 举报
回复
引用 2 楼 Chen8013 的回复:
[quote=引用 1 楼 VBToy 的回复:] 用pictureBox绘图,pictureBox的scalemode设置成vbPixels,height设置成799,width设置成1159,保存pictureBox图像就是799×1159的了。
你这样做,根本达不到目的。 scalemode只影响在“绘图时”各个“图元像素坐标”跟“内存位图”的图像数据之间的“映射关系”,   不会影响到“内存位图大小”,也就不会影响到保存之后的图像大小。   并且,当你改变ScaleWidth或ScaleHeight的值时,它的ScaleMode自然的就变成 0-User(用户模式)了;   你事先指定的 3-Pixel 模式已经失效。 height 、width是决定控件大小的,但它的度量单位是取决于它的“容器”,而不是它自己的 ScaleMode 。 正确的做法,应该是: 调整PictureBox控件的大小(可以在设计时调整,也可以在运行时通过执行代码调整), 让它的大小刚好使其 ScaleWidth=799像素、ScaleHeight=1159像素。 然后把AutoRedraw设置为True,再在这个PictureBox上画图、画好后保存其Image图像数据,就是一幅799×1159大小的位图了。 比如在设计时设置PictureBox的大小:假设控件大小的度量单位是“缇”(VB6默认单位)、外观是3D并且带边框: 要ScaleWidth为799像素,那么控件宽度就必须是803像素,把其Width属性设置为12045(此时其ScaleWidth =11985); 要ScaleHeight为1159像素,控件高度就是1163像素,把其Height属性设置为17445(此时其ScaleHeight=17385)。 11985缇=799像素, 17385缇=1599像素。 如果把“刚才”设置好大小的PicutreBox的ScaleMode更改为3-Pixel,就可以看到它的ScalWidth、ScaleHeight分别为799和1159。 [/quote] 不是设置ScaleWidth,是设置Width
舉杯邀明月 2017-10-11
  • 打赏
  • 举报
回复
引用 1 楼 VBToy 的回复:
用pictureBox绘图,pictureBox的scalemode设置成vbPixels,height设置成799,width设置成1159,保存pictureBox图像就是799×1159的了。
你这样做,根本达不到目的。 scalemode只影响在“绘图时”各个“图元像素坐标”跟“内存位图”的图像数据之间的“映射关系”,   不会影响到“内存位图大小”,也就不会影响到保存之后的图像大小。   并且,当你改变ScaleWidth或ScaleHeight的值时,它的ScaleMode自然的就变成 0-User(用户模式)了;   你事先指定的 3-Pixel 模式已经失效。 height 、width是决定控件大小的,但它的度量单位是取决于它的“容器”,而不是它自己的 ScaleMode 。 正确的做法,应该是: 调整PictureBox控件的大小(可以在设计时调整,也可以在运行时通过执行代码调整), 让它的大小刚好使其 ScaleWidth=799像素、ScaleHeight=1159像素。 然后把AutoRedraw设置为True,再在这个PictureBox上画图、画好后保存其Image图像数据,就是一幅799×1159大小的位图了。 比如在设计时设置PictureBox的大小:假设控件大小的度量单位是“缇”(VB6默认单位)、外观是3D并且带边框: 要ScaleWidth为799像素,那么控件宽度就必须是803像素,把其Width属性设置为12045(此时其ScaleWidth =11985); 要ScaleHeight为1159像素,控件高度就是1163像素,把其Height属性设置为17445(此时其ScaleHeight=17385)。 11985缇=799像素, 17385缇=1599像素。 如果把“刚才”设置好大小的PicutreBox的ScaleMode更改为3-Pixel,就可以看到它的ScalWidth、ScaleHeight分别为799和1159。
VBToy 2017-10-11
  • 打赏
  • 举报
回复
用pictureBox绘图,pictureBox的scalemode设置成vbPixels,height设置成799,width设置成1159,保存pictureBox图像就是799×1159的了。

7,785

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧