2013-04-05 36 views
2

我的問題很簡單,但我無法處理它。我有一個yin-yang.jpg文件,我只想得到圓形(沒有剩下的矩形,它不應該是可點擊的),更多的整個白色變成紅色,黑色的部分應該排除從一個圖像以及(不可點擊)。通過顏色排除圖像的一部分

該圖像將成爲我的表單的背景,我希望在應用程序開始時顯示該表單。

private void hello_form_Paint(object sender, PaintEventArgs e) 
    { 
     Form f = (Form)sender; 
     f.BackgroundImage = global::TicTacToe.Properties.Resources.ying_yang1; 
     GraphicsPath formPath = new GraphicsPath(); 
     Rectangle newRectangle = f.ClientRectangle; 
     e.Graphics.DrawEllipse(System.Drawing.Pens.Black, newRectangle); 
     newRectangle.Inflate(-5, -5); 
     formPath.AddEllipse(newRectangle); 
     f.Region = new Region(formPath); 

    } 

在我的表單上繪製事件讓我們看到它們,但這並不是我所要做的全部事情。如何從背景中排除黑色部分以及如何將白色部分更改爲紅色部分?

+1

您能否提供更深入的信息,瞭解您想以更好的格式化方式實現的目標?準確地說,你試圖達到什麼目標? – Clint 2013-04-05 11:42:35

+0

插入你的圖片 – KF2 2013-04-05 11:48:14

+0

我的應用程序是在屏幕上顯示的一種形式。 -form是一個正方形 -background of form是一個yin-yang.jpg - 只有陰陽輪是可見的,其餘的形狀是透明的(我可以點擊這個矩形的其餘部分) -yin-yang黑白 這樣的效果:白色和黑色我想動態地改變它們:白色變成紅色, http://i45.tinypic.com/2hofse1.jpg 或者,也許是一個更好的方式來顯示這比表演形式? – 2013-04-05 11:54:52

回答

1

鑑於你所描述你會發現什麼:

http://msdn.microsoft.com/en-us/library/system.drawing.bitmap.maketransparent(v=vs.71).aspx

Bitmap.MakeTransparent()一個有用的方法去探索,它可以讓你把你的圖像透明給定的顏色。

+0

它使我的顏色透明,但在我的背景下圖像是一個不能透明的表單,所以我必須從表單(包括表單)中完全排除一個黑色區域。 這不是「好」的方式,如何讓它更光滑? 也許我寧願選擇白色部分,然後使用Region.Exclude函數。但這是怎麼回事? – 2013-04-05 12:22:44

+0

@ user2248836等一下,你是否想說你想要表單上的黑色部分通過表格「剪切」來揭示表單下的內容?有效地將表格的這一部分變成透明的? – Clint 2013-04-05 12:24:29

+0

是的,我是。我很抱歉我的不準確。 – 2013-04-05 12:26:40

1

如果您使用透明背景的文件,如.png或.gif,則應將其設置爲表單背景時才能看到圓形陰陽形狀。 您可以使用GIMP或Photoshop輕鬆編輯.jpg,以使矩形在圓圈外透明。

編輯:這是你正在嘗試做什麼?

+0

但我只有不透明的圖像,我必須在我的代碼中動態更改它。 – 2013-04-05 11:56:29

+0

閱讀您對其他答案的評論,我已經尋找可能有用的東西。你讀過這個話題了嗎? http://stackoverflow.com/questions/1550371/how-can-i-make-a-part-of-the-form-partially-transparent-in-c – 2013-04-05 13:09:32