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 谢谢你们这个方法! 展开
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 谢谢你们这个方法! 展开
4个回答
展开全部
楼主可以把他放到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();
就可以实现围绕一点的旋转了。
呵呵,期待加分!
不知道楼主的展示控件是什么控件?
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 广告
2024-11-19 广告
标定板认准大凡光学科技,专业生产研发厂家,专业从事光学影像测量仪,光学投影测量仪.光学三维测量仪,光学二维测量仪,光学二维测量仪,光学三维测量仪,光学二维测量仪.的研发生产销售。东莞市大凡光学科技有限公司创立于 2018 年,公司总部坐落于...
点击进入详情页
本回答由东莞大凡提供
展开全部
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);
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);
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
向负方向平移 旋转过后再平移回去
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);
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);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不太清楚
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询