C# 使用纹理笔刷删除封面图像并告知何时大部分已消失的刮擦效果
我所做的是在picturebox1背景图像中放置一个图像,然后在图像顶部绘制一个封面图像。使用picturebox1鼠标移动如果鼠标向下,它会擦除部分封面,以显示底部图像,基本上就像刮擦票一样。我不知道如何判断大部分封面图像是否被删除。这就是我目前所拥有的C# 使用纹理笔刷删除封面图像并告知何时大部分已消失的刮擦效果,c#,C#,我所做的是在picturebox1背景图像中放置一个图像,然后在图像顶部绘制一个封面图像。使用picturebox1鼠标移动如果鼠标向下,它会擦除部分封面,以显示底部图像,基本上就像刮擦票一样。我不知道如何判断大部分封面图像是否被删除。这就是我目前所拥有的 bmp1 = new Bitmap(coverimage); tb = new TextureBrush(pictureBox1.BackgroundImage); private void pictureBox1_Pai
bmp1 = new Bitmap(coverimage);
tb = new TextureBrush(pictureBox1.BackgroundImage);
private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
base.OnPaint(e);
e.Graphics.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality;
e.Graphics.InterpolationMode = InterpolationMode.HighQualityBilinear;
e.Graphics.DrawImage(bmp1, 0, 0, 400, 325);
}
private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
if (!_LastPoint.IsEmpty)
{
using (Graphics g = Graphics.FromImage(bmp1))
using (Pen p = new Pen(tb, 50))
{
p.StartCap = LineCap.Round;
p.EndCap = LineCap.Round;
g.DrawLine(p, _LastPoint, e.Location);
if (!g.Equals (bmp1))
{
MessageBox.Show("done");
}
}
}
_LastPoint = e.Location;
pictureBox1.Refresh();
}
}
这个!g、 Equals(bmp1)会在图像发生更改时通知我,但我无法找到方法使其仅在图像发生剧烈更改时通知我。还有什么可以评判的吗
更新:::
static int flags = 0;
public static void ImageCompareString(Bitmap firstImage, Bitmap secondImage)
{
MemoryStream ms = new MemoryStream();
firstImage.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
String firstBitmap = Convert.ToBase64String(ms.ToArray());
ms.Position = 0;
secondImage.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
String secondBitmap = Convert.ToBase64String(ms.ToArray());
if (firstBitmap.Equals(secondBitmap))
{
flags = flags + 1;
}
else
{
}
我是如何通过计算标志来实现上述功能的,当它们>=50时,允许下一步并清除掩码您可以创建一个“掩码”图像,以找出用户未覆盖的百分比: 要做到这一点,创建一个白色背景的图像,在该图像上你也可以用黑色笔画出这些线,然后从这个隐藏的图像中,你可以通过使用函数计算非白色像素的数量,轻松找到未覆盖的百分比 比较颜色时要小心(摘自备注部分):
要仅根据颜色的ARGB值比较颜色,应使用ToArgb方法。这是因为Equals和Equality成员不仅仅使用颜色的ARGB值来确定等价性。除非不要使用
GetPixel
,因为它非常慢。我喜欢你答案背后的想法,它可能对任何计划为发布的应用程序这样做的人都更有效,但我这样做是为了好玩,我不想在应用程序中添加另一个掩码,而且我得到了我的问题的修订版本,以满足我的需要。不过,我会选择你的答案,以防有人路过这里寻找类似的东西,这样他们就可以走你描述的路线,因为我相信它更稳定。非常感谢。