翻转绘制的图像
本文关键字:图像 绘制 翻转 | 更新日期: 2023-09-27 17:59:37
我正在做一个小C#项目,它需要我将已经绘制的图像移动到表单中。以下是绘制算法:
public void DrawImagePoint(PaintEventArgs e)
{
// Create image.
newImage = A_Worm_Nightmare.Properties.Resources.Worm;
// Create Point for upper-left corner of image.
Point ulCorner = new Point(50, 50);
// Draw image to screen.
e.Graphics.DrawImage(newImage, ulCorner);
}
private void Form1_Paint(object sender, PaintEventArgs e)
{
DrawImagePoint(e);
}
问题:由于无法在计时器中实现此方法,如何在WinForms中翻转已绘制的对象?(timer_Tick
不支持PaintEventArgs
)由Cursor.Position.X
进行翻转。以下是普通"图片盒"的算法:
private void timer1_Tick(object sender, EventArgs e)
{
bool Ok = true;
if (Cursor.Position.X <= 135 && Ok)
{
image.RotateFlip(RotateFlipType.RotateNoneFlipY);
Ok = false;
}
else if (Cursor.Position.X >= 135 && !Ok)
{
Ok = true;
}
}
提前感谢
我明白你想做什么了。您必须致电
this.Refresh();
计时器事件。这将触发绘制事件。
您肯定需要一个计时器。只需更改Timer‘s Tick中的位置并调用Invalidate
,它就会使您的表单重新绘制。
private Point location = Point.Empty;
private Image newImage;
private void OnTimerTick(object sender, EventArgs e)
{
location.Offset(1,1);
//Do flipping here
newImage.RotateFlip(RotateFlipType.RotateNoneFlipY);
this.Invalidate();//Makes form to repaint
}
public void DrawImagePoint(PaintEventArgs e)
{
if(newImage == null)
{
newImage = A_Worm_Nightmare.Properties.Resources.Worm;
}
e.Graphics.DrawImage(newImage, location);
}
你可以设置一个任何频率的定时器,这应该是可行的。
还要注意,每次查询Resources.Image
时,它都会创建新的Image
。因此,您应该将图像缓存在某个位置,以避免这种开销。