利用PaintPicture使用图片居中
我想要的效果是 点击按钮 是绘制出来的图片 顺时针90度旋转
图片格式 和大小不固定希望大虾帮忙写下代码 就想要 绘制出来的图片 顺时针90度旋转Option ExplicitDim tempPicture As IPictureDispPrivate Sub Command1_Click()
Dim path As String
path = "E:\fff\TEMP\0001.jpg"
' Picture1.Picture = LoadPicture(path)
Set tempPicture = LoadPicture(path)
PictureToCenter tempPicture, Picture1
Picture2.Picture = LoadPicture(path)
End SubPublic Sub PictureToCenter(pic As Picture, PicBox As PictureBox)
Dim PicH As Long, PicW As Long
Dim PicBoxW As Long, PicBoxH As Long
Dim PicRate As Single, PicBoxRate As Single
Dim NewH As Long, NewW As Long
If Not pic Is Nothing Then
PicBoxH = PicBox.ScaleHeight
PicBoxW = PicBox.ScaleWidth
PicBoxRate = PicBoxW / PicBoxH
PicW = PicBox.ScaleX(pic.Width, vbHimetric, vbTwips)
PicH = PicBox.ScaleY(pic.Height, vbHimetric, vbTwips)
PicRate = PicW / PicH
' PicBox.Picture = Nothing
PicBox.Cls
If PicH <= PicBoxH And PicW <= PicBoxW Then
PicBox.PaintPicture pic, (PicBoxW - PicW) / 2, (PicBoxH - PicH) / 2
Exit Sub
End If
If PicBoxRate < PicRate Then
NewH = PicBoxW / PicRate
PicBox.PaintPicture pic, 0, (PicBoxH - NewH) / 2, PicBoxW, NewH
Else
NewW = PicBoxH * PicRate
PicBox.PaintPicture pic, (PicBoxW - NewW) / 2, 0, NewW, PicBoxH
End If
' PicBox.Picture = Pic
End If
End Sub
End Sub
我想要的效果是 点击按钮 是绘制出来的图片 顺时针90度旋转
图片格式 和大小不固定希望大虾帮忙写下代码 就想要 绘制出来的图片 顺时针90度旋转Option ExplicitDim tempPicture As IPictureDispPrivate Sub Command1_Click()
Dim path As String
path = "E:\fff\TEMP\0001.jpg"
' Picture1.Picture = LoadPicture(path)
Set tempPicture = LoadPicture(path)
PictureToCenter tempPicture, Picture1
Picture2.Picture = LoadPicture(path)
End SubPublic Sub PictureToCenter(pic As Picture, PicBox As PictureBox)
Dim PicH As Long, PicW As Long
Dim PicBoxW As Long, PicBoxH As Long
Dim PicRate As Single, PicBoxRate As Single
Dim NewH As Long, NewW As Long
If Not pic Is Nothing Then
PicBoxH = PicBox.ScaleHeight
PicBoxW = PicBox.ScaleWidth
PicBoxRate = PicBoxW / PicBoxH
PicW = PicBox.ScaleX(pic.Width, vbHimetric, vbTwips)
PicH = PicBox.ScaleY(pic.Height, vbHimetric, vbTwips)
PicRate = PicW / PicH
' PicBox.Picture = Nothing
PicBox.Cls
If PicH <= PicBoxH And PicW <= PicBoxW Then
PicBox.PaintPicture pic, (PicBoxW - PicW) / 2, (PicBoxH - PicH) / 2
Exit Sub
End If
If PicBoxRate < PicRate Then
NewH = PicBoxW / PicRate
PicBox.PaintPicture pic, 0, (PicBoxH - NewH) / 2, PicBoxW, NewH
Else
NewW = PicBoxH * PicRate
PicBox.PaintPicture pic, (PicBoxW - NewW) / 2, 0, NewW, PicBoxH
End If
' PicBox.Picture = Pic
End If
End Sub
End Sub
http://www.vbaccelerator.com/home/VB/Code/vbMedia/Using_GDI_Plus/Scale__Rotate__Skew_and_Transform_Images/article.asp
http://topic.csdn.net/t/20040730/11/3225938.html
Option Explicit
Const Pi = 3.14
Private Sub CommandRototate_Click()
Dim x As Integer, y As Integer
Dim X1 As Integer, Y1 As Integer
Dim X2 As Double, Y2 As Double
Dim X3 As Double, Y3 As Double
Dim JiaoDu As Double
Dim HuDu As Double
JiaoDu = 45 '角度
HuDu = JiaoDu * Pi / 180 '弧度
PicSource.ScaleMode = vbPixels
PicTarget.ScaleMode = vbPixels
For x = 0 To PicTarget.ScaleWidth
X1 = x - PicTarget.ScaleWidth \ 2
For y = 0 To PicTarget.ScaleHeight
Y1 = y - PicTarget.ScaleHeight \ 2
X2 = X1 * Cos(-HuDu) + Y1 * Sin(-HuDu)
Y2 = Y1 * Cos(-HuDu) - X1 * Sin(-HuDu)
X3 = X2 + PicSource.ScaleWidth \ 2
Y3 = Y2 + PicSource.ScaleHeight \ 2
If X3 > 0 And X3 < PicSource.ScaleWidth - 1 And Y3 > 0 And Y3 <
PicSource.ScaleHeight - 1 Then
PicTarget.PSet (x, y), PicSource.Point(X3, Y3)
End If
Next y
Next x
End Sub
运行后,按下“旋转”按钮,可以见到源图画盒中的位图旋转45度后进入到目标图画盒中。如果要改变旋转的角度,只需将JiaoDu变量设置为相应值即可。
http://hi.baidu.com/microsoft6477/blog/item/56f5b8f7c4c1aa28730eec10.html
由fzx4936提供。我转给你。你感谢他(她)吧。