C#旋转矩形

我是用awArgs.Graphics.DrawRectangle(pen,m_Point[0].X,m_Point[0].Y,m_Width,m_Height);画了一个... 我是用
awArgs.Graphics.DrawRectangle(pen, m_Point[0].X, m_Point[0].Y, m_Width, m_Height);
画了一个矩形! 但是我想让这个矩形带角度所以就用了 drawArgs.Graphics.RotateTransform(30,MatrixOrder.Append); 这个方法 但是画完之后它的位置就变了! 所以我想问下有没有别的办法 能让我画的矩形 围绕m_Point[0].X, m_Point[0].Y 这个点来进行旋转! 请大家帮帮忙!
2楼的方法我试过了 确实可以 但是我想让我画的矩形 围绕矩形的坐上角的点 来旋转 也就是说以矩形的左上角的点为中心 来旋转! 3楼和4楼的兄弟 我是在一个 显示控件上画矩形所以不可能往上面增加pictureBox 谢谢你们这个方法!
展开
 我来答
百度网友cdbc122
2009-05-11
知道答主
回答量:30
采纳率:100%
帮助的人:0
展开全部
楼主可以把他放到PictureBox中啊,借助控件内部绘图从而达到定位效果。

private float angle = 0;

private void Form1_Load(object sender, EventArgs e)
{
pictureBox1.BackColor = Color.White;
pictureBox1.Dock = DockStyle.Fill;

}
//绘图方法
private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
int width = 20;
int height = 40;

int x = (pictureBox1.Width - width) / 2;
int y = (pictureBox1.Height - height) / 2;

e.Graphics.TranslateTransform(x, y);
e.Graphics.RotateTransform(angle);

e.Graphics.DrawRectangle(new Pen(Color.Black, 1), new Rectangle(0 - width/2, 0 - height/2, width, height));

}
这样就会在pictureBox1中央绘出一个矩形,改变私有变量angle的大小,在调用代码:
pictureBox1.Invalidate();
pictureBox1.Update();
就可以实现围绕一点的旋转了。
呵呵,期待加分!

不知道楼主的展示控件是什么控件?
东莞大凡
2024-11-19 广告
标定板认准大凡光学科技,专业生产研发厂家,专业从事光学影像测量仪,光学投影测量仪.光学三维测量仪,光学二维测量仪,光学二维测量仪,光学三维测量仪,光学二维测量仪.的研发生产销售。东莞市大凡光学科技有限公司创立于 2018 年,公司总部坐落于... 点击进入详情页
本回答由东莞大凡提供
百度网友dc91b32
2009-05-11 · TA获得超过5650个赞
知道大有可为答主
回答量:5653
采纳率:0%
帮助的人:0
展开全部
Graphics g = pictureBox1.CreateGraphics();

g.DrawRectangle(new Pen(Color.Red), 100, 50, 100, 50);

g.TranslateTransform(100, 50);
g.RotateTransform(30);
g.TranslateTransform(-100, -50);

g.DrawRectangle(new Pen(Color.Blue), 100, 50, 100, 50);

// 补充
晕死,你就不知道改一下吗?

Graphics g = awArgs.Graphics;

g.DrawRectangle(new Pen(Color.Red), 100, 50, 100, 50);

g.TranslateTransform(100, 50);
g.RotateTransform(30);
g.TranslateTransform(-100, -50);

g.DrawRectangle(new Pen(Color.Blue), 100, 50, 100, 50);
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Dedicatus545__
2009-05-11 · TA获得超过239个赞
知道小有建树答主
回答量:86
采纳率:0%
帮助的人:168万
展开全部
向负方向平移 旋转过后再平移回去

drawArgs.Graphics.TranslateTransform(-m_Point[0].X, -m_Point[0].Y, MatrixOrder.Append);
drawArgs.Graphics.RotateTransform(30, MatrixOrder.Append);
drawArgs.Graphics.TranslateTransform(m_Point[0].X, m_Point[0].Y, MatrixOrder.Append);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友6f75ac8fa
2009-05-11 · TA获得超过2513个赞
知道大有可为答主
回答量:1.3万
采纳率:0%
帮助的人:4019万
展开全部
不太清楚
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式