YetAnotherCoder
asked on
How to apply RotateTransform to this control?
ASKER
Hi ged325,
I am sorry for not making it clear. It is not for silverlight. It is a Windows User Control.
I am sorry for not making it clear. It is not for silverlight. It is a Windows User Control.
Unfortunately looks like you'll need WPF, which the above should apply for. It doesn't look like it's possible in a normal windows application.
http://social.msdn.microsoft.com/Forums/en-SG/winforms/thread/38a6ecba-1b54-41c7-a3df-20670798c3df
http://social.msdn.microsoft.com/Forums/en-SG/winforms/thread/38a6ecba-1b54-41c7-a3df-20670798c3df
Give this a shot.
using System.Drawing.Drawing2D;
using System.Drawing.Drawing2D;
private void Form1_Paint(object sender, PaintEventArgs e)
{
Graphics g = e.Graphics;
Pen pen = new Pen(Color.Black);
g.RotateTransform(45.0f); // rotate 45'
g.TranslateTransform(this.ClientSize.Width / 2, this.ClientSize.Height / 2, MatrixOrder.Append); // translate
g.DrawRectangle(pen,new Rectangle(-100, -40, 200, 80));
g.DrawEllipse(pen, -100, -40, 200, 80);
}
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Hi Eric,
Thanks for the reply. But what I have to do is this:
Quite similar to what you said but I have to set the region to the drawn area so that not drawn area will get clipped. So I have to do the following:
In addition to code of yours, I have to do this
Matrix M = new Matrix();
// Translate the Origin to Center of the control in the matrix
M.Translate(ClientRectangl e.Width / 2, ClientRectangle.Height / 2);
// If needs to be rotated then apply rotation as well for the above matrix
if (SprayDirection == Spray_Direction.Left)
M.RotateAt(90f, Center);
else if (SprayDirection == Spray_Direction.Right)
M.RotateAt(-90f, Center);
// Re-compute all the graphics path points to the newly created matrix order
gp.Transform(M);
// Apply to the region
Region rgn = new Region(gp);
Thanks for the reply. But what I have to do is this:
Quite similar to what you said but I have to set the region to the drawn area so that not drawn area will get clipped. So I have to do the following:
In addition to code of yours, I have to do this
Matrix M = new Matrix();
// Translate the Origin to Center of the control in the matrix
M.Translate(ClientRectangl
// If needs to be rotated then apply rotation as well for the above matrix
if (SprayDirection == Spray_Direction.Left)
M.RotateAt(90f, Center);
else if (SprayDirection == Spray_Direction.Right)
M.RotateAt(-90f, Center);
// Re-compute all the graphics path points to the newly created matrix order
gp.Transform(M);
// Apply to the region
Region rgn = new Region(gp);
Open in new window