2017-02-27 35 views
1

我正在編程Visual Basic.NET in Visual studio 2017 RC如何使用「PictureBox.Image.Flags」屬性

在我的形式,我使用的是圖片框名爲「圖片框」。我試圖獲取有關在圖片框內使用顯示的圖片信息PictureBox.Image.Flags屬性因此用戶可以查看這些信息。

但是,使用此屬性似乎非常困難,因爲它返回的值是其他值的總和。

什麼是使用此屬性的權利和最有效的方法?如果它不起作用,是否有另一種方式來代表圖像標誌信息而不使用此屬性

+2

由於MSDN和對象瀏覽器解釋它是System.Drawing.Imaging.ImageFlags這個System.Drawing.Image的按位組合它是一個枚舉,所以你可以使用flags.HasFlag(...) '測試一個值 – Plutonix

+0

@Plutonix在哪裏使用flags.HasFlag(...)以及在哪裏? – HEA

+0

Hasflag似乎沒有附加到旗幟@Plutonix –

回答

0

來測試各個標誌使用功能

If (PictureBox1.Image.Flags And System.Drawing.Imaging.ImageFlags.ColorSpaceGray) <> 0 Then 

或倍數

Imports System.Drawing.Imaging.ImageFlags 


If (PictureBox1.Image.Flags And (ColorSpaceGray + ColorSpaceRgb)) <> 0 Then 

替代

Imports System.Drawing.Imaging 
Imports System.Drawing.Imaging.ImageFlags 

If CType(PictureBox1.Image.Flags, ImageFlags).HasFlag(ColorSpaceGray) then 

或其倍數

If CType(PictureBox1.Image.Flags, ImageFlags).HasFlag(CType(ColorSpaceGray + ColorSpaceRgb, ImageFLags)) then 
+0

如果設置了標誌,括號內的值將不爲零。在這種情況下是一個二進制和。 –

+0

謝謝,它工作!但我不明白「 \t 括號中的值如果設置標誌將不爲零」。 – HEA

+0

你必須理解AND如何在二進制中工作... 1010 AND 0010 = 0010 ...這不是零。 –