vbnet旋转图片,vb 图片旋转

vb中,怎么可以把一张图片旋转起来

这个问题不是小问题。如果只是90度转,vb.net的picture控件有RotateFlip方法。

成都创新互联公司专业为企业提供武邑网站建设、武邑做网站、武邑网站设计、武邑网站制作等企业网站建设、网页设计与制作、武邑企业网站模板建站服务,10余年武邑做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。

任意角度,可以参考这个

;cs-lang=csharp

图片的变换涉及坐标处理,要自己算。

还有可以用Windows Presentation Foundation (WPF) 编程,里面的image控件好像也能旋转图片。

如果是VB6,恐怕只能用API函数了,百度一下“vb 旋转图片” “VB api函数”了解一下

在vb中如何旋转图片?

逆时针旋转90度

Dim p()

ScaleMode = 3

Picture1.AutoRedraw = True

Picture1.ScaleMode = 3

w = Picture1.ScaleWidth

h = Picture1.ScaleHeight

ReDim p(w - 1, h - 1)

For i = 0 To w - 1

For j = 0 To h - 1

p(i, j) = Picture1.Point(i, j)

Next j

Next i

Picture1.Width = h + 4 * Picture1.BorderStyle

Picture1.Height = w + 4 * Picture1.BorderStyle

For i = 0 To h - 1

For j = 0 To w - 1

Picture1.PSet (i, w - j - 1), p(j, i)

Next j

Next i

顺时针旋转90度把Picture1.PSet (i, w - j - 1), p(j, i)

改为Picture1.PSet (h - i - 1, j), p(j, i)

旋转180度把最后七行改为

For i = 0 To w - 1

For j = 0 To h - 1

Picture1.PSet (i, j), p(w - i - 1, h - j - 1)

Next j

Next i

VB.net 旋转图像时,如何指定填充色

绘制线条采用Draw开头的方法,颜色参数用Pen类;

绘制有填充色的封闭图形采用Fill开头的方法,颜色参数用Brush类;

例如:

'绘制一个实心圆,该圆在:直线x=200,y=200,x=200+100,y=200+100所划矩形区域内

Me.CreateGraphics.FillEllipse(New SolidBrush(Color.Orange), 200, 200, 100, 100)

'绘制一个空心圆,该圆在:直线x=200,y=200,x=200+100,y=200+100所划矩形区域内

Me.CreateGraphics.DrawEllipse(New Pen(Color.Black), 200, 200, 100, 100)

怎么用vb实现图形的旋转?

启动vb6建立一个标准exe工程,首先添加两个图片框(picture1和picture2),添加三个命令按钮command1(caption=“正常显示”)、command2(caption=“180度倒立”)、command3(caption=“45度旋转”),双击窗体,写入以下代码:

PrivateConstSRCCOPY=HCC0020

PrivateConstPi=3.14

PrivateDeclareFunctionSetPixelLib"gdi32"(ByValhdcAsLong, ByValxAsLong,ByValyAsLong,ByValcrColorAsLong)AsLong

PrivateDeclareFunctionGetPixelLib"gdi32"(ByValhdcAsLong, ByValxAsLong,ByValyAsLong)AsLong

PrivateDeclareFunctionStretchBltLib"gdi32"(ByValhdcAsLong, ByValxAsLong,ByValyAsLong,ByValnWidthAsLong,ByValnHeightAsLong, ByValhSrcDCAsLong,ByValxSrcAsLong,ByValySrcAsLong,ByValnSrcWidth AsLong,ByValnSrcHeightAsLong,ByValdwRopAsLong)AsLong

privateSubbmp_rotate(pic1AsPictureBox,pic2AsPictureBox,ByValtheta)‘45度旋转

Dimc1xAsInteger,c1yAsInteger

Dimc2xAsInteger,c2yAsInteger

DimaAsSingle

Dimp1xAsInteger,p1yAsInteger

Dimp2xAsInteger,p2yAsInteger

DimnAsInteger,rAsInteger

c1x=pic1.ScaleWidth\2

c1y=pic1.ScaleHeight\2

c2x=pic2.ScaleWidth\2

c2y=pic2.ScaleHeight\2

Ifc2x$#@60;c2yThenn=c2yElsen=c2x

n=n-1

pic1hDC=pic1.hdc

pic2hDC=pic2.hdc

Forp2x=0Ton

Forp2y=0Ton

Ifp2x=0Thena=Pi/2Elsea=Atn(p2y/p2x)

r=Sqr(1*p2x*p2x+1*p2y*p2y)

p1x=r*Cos(a+theta)

p1y=r*Sin(a+theta)

c0=GetPixel(pic1hDC,c1x+p1x,c1y+p1y)

c1=GetPixel(pic1hDC,c1x-p1x,c1y-p1y)

c2=GetPixel(pic1hDC,c1x+p1y,c1y-p1x)

c3=GetPixel(pic1hDC,c1x-p1y,c1y+p1x)

Ifc0$#@60;$#@62;-1ThenSetPixelpic2hDC,c2x+p2x,c2y+p2y,c0

Ifc1$#@60;$#@62;-1ThenSetPixelpic2hDC,c2x-p2x,c2y-p2y,c1

Ifc2$#@60;$#@62;-1ThenSetPi pic2hDC,c2x+p2y,c2y-p2x,c2

Ifc3$#@60;$#@62;-1ThenSetPixelpic2hDC,c2x-p2y,c2y+p2x,c3

Next

Next

EndSub

PrivateSubCommand1_Click()‘正常复制

Picture2.Cls

px=Picture1.ScaleWidth

py=Picture1.ScaleHeight

StretchBltPicture2.hdc,px,0,-px,py,Picture1.hdc,0,0,px,py,SRCCOPY

EndSub

PrivateSubCommand2_Click()‘180度倒立

Picture2.Cls

px=Picture1.ScaleWidth

py=Picture1.ScaleHeight

StretchBltPicture2.hdc,0,py,px,-py,Picture1.hdc,0,0,px,py,SRCCOPY

EndSub

PrivateSubCommand3_Click()‘45旋转

Picture2.Cls

Callbmp_rotate(Picture1,Picture2,3.14/4)

EndSub

PrivateSubForm_Load()

OnErrorResumeNext

Me.Caption=App.Title"添加应用程序标题

Me.Left=(Screen.Width-Me.Width)/2

Me.Top=(Screen.Height-Me.Height)/2"窗体具中

Picture1.ScaleMode=3

Picture2.ScaleMode=3

EndSub

vb里面怎么样让一张图片旋转?

'GetPixel和SetPixel太慢了.系统有现成的API用. '本例子需要两个PictureBox,名称分别为PicBack和PicShow.一个CommandButton,名称:Command1. '在PicShow里载入一张图片,然后运行,点command1按钮,你就可以看到效果. Option Explicit Private Declare Function PlgBlt Lib "gdi32" (ByVal hdcDest As Long, lpPoint As POINTAPI, ByVal hdcSrc As Long, ByVal nXSrc As Long, ByVal nYSrc As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hbmMask As Long, ByVal xMask As Long, ByVal yMask As Long) As Long Private Type POINTAPI x As Long y As Long End Type Const NotPI = 3.14159265238 / 180 Private Sub DanRotate(ByRef picDestHdc As Long, xPos As Long, yPos As Long, ByVal Angle As Long, ByRef picSrcHdc As Long, srcXoffset As Long, srcYoffset As Long, ByVal srcWidth As Long, ByVal srcHeight As Long) Dim Points(3) As POINTAPI Dim DefPoints(3) As POINTAPI Dim sSin As Single, sCos As Single Dim ret As Long Points(0).x = -srcWidth * 0.5 Points(0).y = -srcHeight * 0.5 Points(1).x = Points(0).x + srcWidth Points(1).y = Points(0).y Points(2).x = Points(0).x Points(2).y = Points(0).y + srcHeight sSin = Sin(Angle * NotPI) sCos = Cos(Angle * NotPI) DefPoints(0).x = (Points(0).x * sCos - Points(0).y * sSin) + xPos DefPoints(0).y = (Points(0).x * sSin + Points(0).y * sCos) + yPos DefPoints(1).x = (Points(1).x * sCos - Points(1).y * sSin) + xPos DefPoints(1).y = (Points(1).x * sSin + Points(1).y * sCos) + yPos DefPoints(2).x = (Points(2).x * sCos - Points(2).y * sSin) + xPos DefPoints(2).y = (Points(2).x * sSin + Points(2).y * sCos) + yPos PlgBlt picDestHdc, DefPoints(0), picSrcHdc, srcXoffset, srcYoffset, srcWidth, srcHeight, 0, 0, 0 End Sub Private Sub Form_Load() picShow.ScaleMode = vbPixels picBack.ScaleMode = vbPixels End Sub Private Sub Command1_Click() DanRotate picBack.hDC, 100, 100, 45, picShow.hDC, 0, 0, picShow.ScaleWidth,picShow.ScaleHeight '(函数解释)DanRotate 目标(输出)的设备场景,X坐标,Y坐标,旋转角度,源设备场景,源设备场景X坐标,源设备场景Y坐标 picBack.Refresh '刷新窗体 End Sub

VB 如何旋转图片

你的“旋转”操作的用途是什么?

这个很重要的问题,居然只字未提……

如果是想把图片旋转后进行绘制(输出),可以用API函数PlgBlt( )来完成。

 用它可以任意角度旋转(也支持透明的)后绘制。

如果你要把图片文件旋转后,形成另一个图片文件,这个我就不清楚如何处理了。

(当然不透明还是好办,但要保持原来的透明部分仍然透明,我还真没把握)


网站标题:vbnet旋转图片,vb 图片旋转
本文路径:http://myzitong.com/article/hecspi.html