我有裝載了一個位圖,比如一個圖片,照片後:獲取像素顏色從圖片框畫線
Picture1.Image = new Bitmap("photo.bmp");
而且在Picture1_Paint()
事件,我畫照片一行:
e.Graphics.DrawLine(myPen, pointA, pointB);
現在,我想顯示一個被點擊的像素的RGB信息:
Bitmap bitmap = (Bitmap) Picture1.Image; /* Making sure I'm using the image being displayed */
Color color = bitmap.GetPixel(e.X, e.Y);
lblSelectedColor.Text = color.R.ToString() + ", " + color.G.ToString() + ", " + color.B.ToString();
問題是:我得到的RGB值是原始照片上該像素的顏色,不包括我的線條圖。例如,如果在天空中繪製一條粗紅線,當我點擊那條紅線時,照片上仍然會呈現天藍色。
我想要得到任何在PictureBox中顯示的顏色信息,包括我繪製的線或橢圓。
我想再次複製圖像,'位圖位圖=(位圖)Picture1.Image; '會確保圖像包含所有圖形? – user1032613 2013-03-20 02:39:43
@ user1032613不,不。您必須查看屏幕上的圖像與圖片框中的圖像之間的區別。任何窗口和任何控件都可以在屏幕上繪製。你已經給了你的照片箱一張圖片,並且它將拍攝該照片並在你的屏幕上繪製圖片。當您在「Paint」事件中繪製某些東西時,_you正在屏幕上繪圖。當你做'Picture1.Image'的時候,你從你的圖片框中獲得了圖片的圖片,而這不是你在屏幕上看到的圖片。 – Virtlink 2013-03-20 03:23:02