我喜欢这样。在 10 个问题中的 8 个问题中,它会产生一个直接且立即可用的答案。或者至少解释了为什么我的问题在某种程度上是错误的。
所以我觉得很奇怪,对于这个简单而且我认为是相当普遍的问题,我找不到我喜欢的答案。
在搜索高低后,我将以下解决方案拼凑在一起。它工作正常,但我想知道:
它有缺陷吗?(例如:我需要处置吗?)
有没有更好的解决方案,也许复制更少?
我想看到一个带有 CopyFromScreen 的灵魂,它可能只使用 1x1 位图大小,但需要一个 Graphics .. 所以另一种解决方案将不胜感激。
或者直接访问控件像素的一种。
注意 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);