首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >System.Drawing.Graphics

System.Drawing.Graphics
EN

Stack Overflow用户
提问于 2011-03-14 19:57:38
回答 2查看 2.9K关注 0票数 3

我有一个关于按给定中心旋转椭圆的问题,假设我有一个椭圆,应该是按用户给定的点旋转该椭圆,并且椭圆应该围绕该给定点旋转。我试过了

代码语言:javascript
复制
g.RotateTransform(…)
g.TranslateTransform(…)

代码:

代码语言:javascript
复制
Graphics g = this.GetGraphics(); 
g.RotateTransform((float)degreeArg); //degree to rotate object 
g.DrawEllipse(Pens.Red, 300, 300, 100, 200);

这工作得很好,但是我们如何给出我们的外中心来旋转椭圆……

怎么可能请任何朋友都可以推荐……谢谢……。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-03-14 20:41:43

RotateTransform始终绕原点旋转。因此,您需要首先将旋转中心平移到原点,然后旋转,然后再将其平移回来。

如下所示:

代码语言:javascript
复制
Graphics g = this.GetGraphics(); 
g.TranslateTransform(300,300);
g.RotateTransform((float)degreeArg); //degree to rotate object 
g.TranslateTransform(-300,-300);
g.DrawEllipse(Pens.Red, 300, 300, 100, 200);
票数 4
EN

Stack Overflow用户

发布于 2011-03-14 21:03:53

代码语言:javascript
复制
//center of the rotation
PointF center = new PointF(...);
//angle in degrees
float angle = 45.0f;
//use a rotation matrix
using (Matrix rotate = new Matrix())
{
    //used to restore g.Transform previous state
    GraphicsContainer container = g.BeginContainer();

    //create the rotation matrix
    rotate.RotateAt(angle, center);
    //add it to g.Transform
    g.Transform = rotate;

    //draw what you want
    ...

    //restore g.Transform state
    g.EndContainer(container);
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5298226

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档