私はSOが大好きです。10 問中 8 問で、簡単ですぐに使える答えが得られます。または、少なくとも私の質問がどういうわけか間違っている理由を説明しています。
ですから、この単純で、かなり一般的な質問だと思っていたのに、自分の好みに合う答えを見つけることができなかったのは奇妙だと思いました。
高低を検索した後、以下のソリューションにパッチを当てました。それは問題なく動作しますが、私は疑問に思います:
それに欠陥はありますか?(例: 処分が必要ですか?)
おそらくコピーが少なくて済む、より良い解決策はありますか?
1x1 ビットマップ サイズのみを使用する可能性がありますが、Graphics が必要な CopyFromScreen を使用したソリューションを見たいと思います。したがって、代替ソリューションをいただければ幸いです。
または、コントロールのピクセルに直接アクセスするもの。
注 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);