资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

vb.net怎吗旋转图形 vb如何实现图形旋转

VB中图像旋转问题

这个是不是得API啊,就俺目前的水平来说,只能做到怎么填充背景。

我们提供的服务有:网站建设、成都网站建设、微信公众号开发、网站优化、网站认证、卡若ssl等。为数千家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的卡若网站制作公司

所以,给你一个另类思路:

将原图形利用图形处理软件,分别做成旋转90°,180°,270°的各个形态,分别命名为1.jpg,2.jpg,3.jpg,4.jpg。

然后通过某个程序触发,每触发一次,就填充相应的图形即可实现你要的效果。

例如:设定一个按钮,点一次图形转一次,图形就按照1,2,3,4的顺序依次替换,这样看起来图形就转起来了!

不知道你是否明白我的意思!

怎么用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 如何旋转图片

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

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

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

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

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

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

在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怎样使图形或控件按角度旋转?

如果是控件,暂时没有这个功能;如果是图片的话,就目前来说,需要使用Point方法和PSet方法。通过坐标变换自己手动写代码,很麻烦,而且效率很低,除非你用其他语言写一个DLL,直接通过Bitmap绘制,这样会比较快一点。

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.net怎吗旋转图形 vb如何实现图形旋转
转载来于:http://cdkjz.cn/article/hehdgg.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220