当前位置: 首页 > 编程语言 > C#

旋转图形?分享

时间:2023-04-10 11:39:18 C#

旋转图形?我有这段代码,可以绘制图像。privatevoidtimer1_Tick(objectsender,EventArgse){Invalidate();}protectedoverridevoidOnPaint(PaintEventArgse){vartempRocket=newBitmap(Properties.Resources.rocket);使用(varg=Graphics.FromImage(tempRocket)){e.Graphics.DrawImage(tempRocket,150,150);但是我该如何旋转它呢?publicstaticBitmapRotateImage(Bitmapb,floatangle){//创建一个新的空位图来保存旋转后的图像BitmapreturnBitmap=newBitmap(b.Width,b.Height);//从空位图中创建一个图形对象using(Graphicsg=Graphics.FromImage(returnBitmap)){//将旋转点移动到图像的中心g.TranslateTransform((float)b.Width/2,(float)b.高度/2);//旋转g.RotateTransform(angle);//向后移动图像g.TranslateTransform(-(float)b.Width/2,-(float)b.Height/2);//绘制传入的图像到图形对象上g.DrawImage(b,newPoint(0,0));}返回返回位图;Graphics.DrawImage重载采用三点数组来定义目标的平行四边形,例如:Graphics.DrawImage方法(Image,Point[])备注destPoints参数指定平行四边形的三个点三点结构表示平行四边形的左上角、右上角和左下角。第四点由前三点推导出来形成一个平行四边形。image参数表示的图像被缩放和裁剪以适合destPoints参数指定的平行四边形的形状。MSDN上还有一篇文章描述了此方法的用法:HowTo:Rotate,Reflect,andSkewImages,使用下面的代码示例。不幸的是,该示例通过扭曲图像使问题复杂化。Point[]destinationPoints={newPoint(200,20),//originalnewPoint(110,100)左上角的目的地,//originalnewPoint(250,30)右上角目的地};//原始图像左下角的目标image=newBitmap("Stripes.bmp");//在(0,0)处绘制图像,其左上角保持不变。e.Graphics.DrawImage(图像,0,0);//绘制映射到平行四边形的图像。e.Graphics.DrawImage(图像,目的地点);与使用Graphics.Transform属性相比,主要区别在于:使用Graphics.RotateTransform旋转图像。protectedoverridevoidOnPaint(PaintEventArgse){vartempRocket=newBitmap(Properties.Resources.rocket);e.Graphics.RotateTransform(30.0F);e.Graphics.DrawImage(tempRocket,150,150);}没有裁剪的版本:privateBitmapRotateBitmap(Bitmapbitmap,floatangle){intw,h,x,y;vardW=(double)b??itmap.Width;vardH=(double)b??itmap.Height;双学位=Math.Abs??(angle);if(degreesmainresourceyouneedtoapplytransformationmatrix.HereyoucanfindgoodexampleaboutGDI+transformationaboveisC#LearningTutorial:RotatingGraphics?如果对你有用分享整个内容,需要了解更多C#学习教程,希望大家多多关注---本文采集自网络,不代表立场,如涉及侵权,请点击右边联系管理员删除,如需转载请注明来源: