I 爱 SO。在10个问题中的8个中,它产生了一个直接且可立即使用的答案。或者至少解释了为什么我的问题有些不对。如何获取鼠标位置的面板像素的颜色(RFC)
所以我发现很奇怪,我无法找到我喜欢这个简单的答案,而且我已经假设了一个相当常见的问题。
经过高低搜索后,我将下面的解决方案拼凑在一起。它工作正常,但我想知道:
它有缺陷吗? (例如:我需要配置吗?)
有没有更好的解决方案,可能会减少复制进行?
我想看到CopyFromScreen,它可能只使用一个1x1的位图大小soultion,但需要一个图形。所以替代解决方案将不胜感激。
或者一个直接访问控件的像素。
注1:我想抓住面板的颜色!注意2:对于我的项目来说速度并不重要,因为我想创建一个吸管工具。但快速的方式也是受欢迎的;谁知道我接下来会去..
我的解决办法:
public Color getColor(Control ctl, Point location)
{
Bitmap bmp = new Bitmap(ctl.Width, ctl.Height);
ctl.DrawToBitmap(bmp, new Rectangle(0, 0, ctl.Width, ctl.Height));
Color col = bmp.GetPixel(location.X, location.Y);
bmp.Dispose();
return col;
}
我在colorsPanel_MouseClick事件中使用这样的:
myPen = new Pen(getColor(colorsPanel, e.Location), myStrokeWidth);