2

背景

我正在编写一个应用程序,它在点击时复制剪贴板的对象,ctrl+c这样print screen您不仅拥有当前内容,而且还有“旧”字符串图像文件等。

更多背景

我的应用程序有3 个列表框1 个 picBox。PicBox 是一个预览窗口。如果用户双击图像(将其粘贴到剪贴板),他将获得预览(这样他就可以确保它是正确的)。

我想改进的

我测试了预览,并在 picBox 的边缘遇到了一些伪影:

神器

第一行:原始图像(以下称为图像 1/2/3)。

第二行:我点击图片的顺序。第二列和第三列中有一些工件。

第三行:如果我点击image 1然后点击image 3,我会得到你可以在row 3 col 2看到的图像。row3 col3显示相同的图像,但突出显示了伪影。

伪影似乎是第一张图像的遗留物,因为它们与第一张图像的“红线”位置相同

我使用的方法是:

        Graphics grx = Graphics.FromImage(pictureBox1.Image);
        grx.DrawImage(clipboardListImage[listBoxImg.SelectedIndex], new Rectangle      (new  Point(0,0), pictureBox1.Size));
        pictureBox1.Refresh();
4

1 回答 1

0

好的,我想我有一个解决方案。如果我错了,请纠正我。

我正在使用 imageAttributes 并将 wrapmode 设置为 TileFlipXY。

        ImageAttributes imgattr = new ImageAttributes();
        imgattr.SetWrapMode(System.Drawing.Drawing2D.WrapMode.TileFlipXY);

并在绘图功能中使用它。

grx.DrawImage(clipboardListImage[listBoxImg.SelectedIndex], new Rectangle(new Point(0, 0), pictureBox1.Size),0,0,
            clipboardListImage[listBoxImg.SelectedIndex].Width, clipboardListImage[listBoxImg.SelectedIndex].Height,
            GraphicsUnit.Pixel, imgattr);

不是很方便,但它似乎正在工作;)

于 2012-09-03T14:57:56.570 回答