在VB6中缩放/调整StdPicture的大小

时间:2015-05-14 23:22:19

标签: vb6

我已经远远地看了一眼,并试图弄清楚如何做到这一点。我查看了XtremeVBTalk.com和其他互联网关于如何调整该死的StdPicture的大小!

有谁知道怎么做?这甚至可能吗?

提前非常感谢你。我希望不使用任何类型的库等。所以,如果在解决方案中提供,我不认为我将能够使用它。

我根本没有使用图片盒控件。

假设我有以下函数头,并且传入了StdPicture:

Private Function EncodeImageToBase64(ByRef Image As StdPicture) As String

然后,我有以下声明,我打算将StdPicture编码为base64:

  Dim xmlDoc As DOMDocument60
  Dim xmlNode As MSXML2.IXMLDOMElement
  Dim bColor() As Byte
  Dim bMask() As Byte
  Dim bImage() As Byte
  Dim lCrcTable() As Long
  Dim lWidth As Long
  Dim lHeight As Long
  EncodeImageToBase64 = vbNullString

  If Image Is Nothing Then
    Exit Function
  End If

  Call CRCTable(lCrcTable)
  Call Icon2Arrays(Image, bColor, bMask, lWidth, lHeight)
  If Not CreatePngByteArray(bImage, lWidth, lHeight, bColor, bMask, lCrcTable) Then
    Debug.Assert False
    Exit Function
  End If

然而,在打电话之前,我想将图像的宽度和高度减半。 我该怎么办? CreatePngByteArray只支持16x16 PNG,而我使用的是32x32,所以我希望将它们剪下来以传递它们拥有的断言。

3 个答案:

答案 0 :(得分:2)

好吧,我花了很长时间才知道这个问题,因为我一开始并不知道答案,但我仍然有兴趣找出潜在的解决方案是什么

以下答案是我对你要做的事情的理解,但可能不是问题本身的答案,所以很可能被认为是错误的。

所以,这就是我想出的。您需要使用IPictureDisp对象而不是 StdPicture对象。即使您不是真的想要,也需要使用PictureBox控件。

创建一个新项目。添加表单,或打开现有表单(如果提供)。将窗体的ScaleMode设置为像素。在窗体上添加PictureBox控件。将PictureBox控件的AutoRedraw属性设置为' True',将控件的BorderStyle属性设置为' None',将控件的高度和宽度属性设置为16像素。将以下代码添加到表单,并修改要调整大小的图像的位置和类型,然后将其保存到的位置:

Private Sub Form_Load()

    Dim TestPic As IPictureDisp
    Set TestPic = LoadPicture("C:\Users\Your Name\Desktop\image.gif")
    With TestPic
        .Render Picture1.hDC, 0, 16, 16, -17, 0, 0, .width, .height, 0
    End With
    SavePicture Picture1.Image, "C:\Users\Your Name\Desktop\image2.bmp"

End Sub

图像可以从Visual Basic 6支持的任何类型(.bmp,.cur,.gif,.ico,.jpeg或.jpg和.wmf)开始,但必须始终以位图格式保存。请注意,Visual Basic 6根本不支持PNG文件格式,因此您将无法使用任何VB6函数来打开PNG文件或创建它们。

我会对其他人提出的其他解决方案感兴趣。

修改:固定尺寸。

答案 1 :(得分:0)

你的意思是在PICTUREBOX控件内还是在图像控制内?因为如果我没记错的话,它有一个STRETCH属性,可以将图像自动调整到容器

答案 2 :(得分:0)

@Zaf Khan打败了我。我有类似的东西,我有一个PictureBox。在行为下我将SizeMode设置为StretchImage,然后加载像这样的图像

return res.status(200).redirect('/').json({
  message: 'Successfully confirmed your account!'
});
它自动适合。