社区
C#
帖子详情
C#旋转图形的算法
whyabc
2009-03-31 04:30:42
我想用算法实现图形的旋转,不是用系统的,因为系统的不符合条件!
旋转的效果同PPT上的图形旋转相似,当鼠标放到图形上拖动时可以任意角度的旋转!
要求用C#实现!如果有用过DrawTools的,也可以交流一下!
...全文
986
12
打赏
收藏
C#旋转图形的算法
我想用算法实现图形的旋转,不是用系统的,因为系统的不符合条件! 旋转的效果同PPT上的图形旋转相似,当鼠标放到图形上拖动时可以任意角度的旋转! 要求用C#实现!如果有用过DrawTools的,也可以交流一下!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
chadguo
2009-06-02
打赏
举报
回复
在一个画图面板上面,我写到可以旋转,但是旋转之后句柄计算就不对了
whyabc
2009-04-01
打赏
举报
回复
顶一下
whyabc
2009-03-31
打赏
举报
回复
这也是一种方法,但这样实现起来很麻烦的,我需要重新设计与写代码!
dyshadow
2009-03-31
打赏
举报
回复
不同的图形画在不同的BITMAP上,旋转的话就旋转自己的BITMAP,这个方法如何?
whyabc
2009-03-31
打赏
举报
回复
顶一下
whyabc
2009-03-31
打赏
举报
回复
这样当然是可以旋转图形,但我这的情况是一个画板上有多个图形,这样会不会让画板上的所有图形都旋转呢?
zgke
2009-03-31
打赏
举报
回复
晕~~我说算坐标..你真计算去了..
Graphics _Graphics = this.CreateGraphics();
GraphicsPath _Path =new GraphicsPath();
_Path.AddRectangle(new Rectangle(0,0,100,100));
Region _Region = new Region(_Path);
Matrix _Mtrx = new Matrix();
_Mtrx.Rotate(30); //30度
_Region.Transform(_Mtrx);
_Graphics.FillRegion(Brushes.Yellow, _Region);
使用 Matrix 和 Region 做做看
yeniao5203
2009-03-31
打赏
举报
回复
帮定
whyabc
2009-03-31
打赏
举报
回复
是呀,是需要坐标点!
rect是图形的坐标和大小
int left = rect.Left;
int right = rect.Right;
int bottom = rect.Bottom;
int top = rect.Top;
int x = right;
int y = top;
int xcenter = (right - left + 1) / 2 + left;
int ycenter = (bottom - top + 1) / 2 + top;
double sinA = Math.Cos(angle);
double cosA = Math.Sin(angle);
double xNew = (x - xcenter) * cosA + (y - ycenter) * sinA + xcenter;
double yNew = -(x - xcenter) * sinA + (y - ycenter) * cosA + ycenter;
rect.X = (int)Math.Round(xNew);
rect.Y = (int)Math.Round(yNew);
this.Refresh();
这样得到的好像不对!有没有高手指教一下!
zgke
2009-03-31
打赏
举报
回复
哪个可能需要计算坐标点了.
whyabc
2009-03-31
打赏
举报
回复
我说的意思是图形,不是图片!
zgke
2009-03-31
打赏
举报
回复
/// <summary>
/// 任意角度旋转
/// </summary>
/// <param name="bmp">原始图Bitmap </param>
/// <param name="angle">旋转角度 </param>
/// <param name="bkColor">背景色 </param>
/// <returns>输出Bitmap </returns>
public static Bitmap ImageRotate(Bitmap p_Image, float p_Angle, Color p_BlackColor)
{
int _Width = p_Image.Width + 2;
int _Height = p_Image.Height + 2;
PixelFormat _BitmapPixelFormat = PixelFormat.Format32bppArgb;
if (p_BlackColor != Color.Transparent) _BitmapPixelFormat = p_Image.PixelFormat;
Bitmap _OldBitmap = new Bitmap(_Width, _Height, _BitmapPixelFormat);
Graphics _Graphics = Graphics.FromImage(_OldBitmap);
_Graphics.Clear(p_BlackColor);
_Graphics.DrawImageUnscaled(p_Image, 1, 1);
_Graphics.Dispose();
GraphicsPath _Path = new GraphicsPath();
_Path.AddRectangle(new RectangleF(0f, 0f, _Width, _Height));
Matrix _Mtrx = new Matrix();
_Mtrx.Rotate(p_Angle);
RectangleF _Rect = _Path.GetBounds(_Mtrx);
Bitmap _NewBitmap = new Bitmap((int)_Rect.Width, (int)_Rect.Height, _BitmapPixelFormat);
_Graphics = Graphics.FromImage(_NewBitmap);
_Graphics.Clear(p_BlackColor);
_Graphics.TranslateTransform(-_Rect.X, -_Rect.Y);
_Graphics.RotateTransform(p_Angle);
_Graphics.InterpolationMode = InterpolationMode.HighQualityBilinear;
_Graphics.DrawImageUnscaled(_OldBitmap, 0, 0);
_Graphics.Dispose();
_OldBitmap.Dispose();
return _NewBitmap;
}
抄别人的.
逐步讲解用
C#
实现俄罗斯方块之核心代码[中]
我们知道俄罗斯方块有以下的
图形
■■(1) ■■■■(2)■■■(3)■■■(4)■■■(5)■■□(6)□■■(7)■■(1) □□□□(2)■□□(2)□□■(4)□■□(5)□■■(6)■■□(7)□□□ ■ (8) ■□(9) ■■(A) ■□(B) □■(C) ■□(D)□□□ ■ (8) ■□(9) ■□(A)
俄罗斯方块
算法
设计与实现-
C#
C#
控制台实现俄罗斯方块 原理 绘制区域-画板,将绘制区分为多行,每行多个小的色块区元素; 移动区域,也为一个绘图区,也包含行和行元素,但移动区域存在着色块; 移动区域在画板上呈现,记录移动区相对于画板左上角的偏移量决定呈现位置,相当于横纵坐标; 画板着色,当移动区域向下移动和画板区域由颜色重叠,则将本次移动之前的移动区域在画板上着色。 移动区域 移动区域分为 正方形、线形、凸形、不稳定形; 每个移动
图形
有相同的基类,行数、列数、行偏移量、列偏移量; 移动
图形
存在初始着色区。 关键点
图形
生成器
C#
游戏编程实践:俄罗斯方块项目教程
C#
(发音为 “C Sharp”)于2000年推出,首次亮相是在.NET框架中。它的设计哲学是结合C和C++的强大功能,以及Visual Basic的易用性。
C#
强调类型安全、版本控制和组件交互,其特点如下:类型安全:编译时检查所有数据类型的操作,减少运行时错误。版本控制:允许并列存在同一个库的不同版本。组件交互:易于与.NET环境中的其他组件进行交互。自动垃圾回收:管理内存释放,减少内存泄漏问题。
初学者魔方(2.0版)具有3D
图形
和动画的
C#
应用程序 VS2022 .NET6
该程序将使用初学者
算法
解决魔方。它是用
C#
为VS 2022 .Net6编写的WPF开源应用程序,使用3D
图形
和动画。使用的.NET框架名称空间是:System.Windows.Media和System.Windows.Media.Media3D和System.Windows.Media.Animation。
C#
数字图像处理实战:源代码与应用
C#
(发音为 "See Sharp")是一种由微软开发的现代、类型安全的面向对象编程语言。它被设计为.NET平台的核心语言,与公共语言运行时(CLR)紧密集成,以实现跨语言的互操作性。
C#
的设计受到了C、C++和Java语言的影响,提供了简洁、表达性强的语法,使得开发者能够高效地编写各种应用程序,从简单的控制台应用程序到复杂的Web服务。GDI+(Graphics Device Interface Plus)是Windows操作系统中用于处理
图形
的一个重要组成部分。
C#
111,129
社区成员
642,541
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章