更改BitmapSource选项板

时间:2012-09-21 21:08:32

标签: wpf

有没有办法在WPF中更改BitmapSource的调色板? (在运行时) 我尝试的每个BitmapSource层次结构都具有对调色板的只读访问权。

1 个答案:

答案 0 :(得分:0)

我还没有找到一种方法以一种很好的方式完成它,但你总是可以从原来的位图重新创建一个位图:

如果你有:

Private myBitmap As System.Windows.Media.Imaging.WriteableBitmap
Private myCurrentPalette As List(Of Color)  

然后,当您想要更改调色板时,请执行以下操作:

    Dim iWidth As Integer = myBitmap.Width
    Dim iHeight As Integer = myBitmap.Height
    Dim iPixel(iWidth * iHeight - 1) As Byte
    myBitmap.CopyPixels(iPixel, iWidth, 0)
    myBitmap = New WriteableBitmap(iWidth, iHeight, 96, 96, PixelFormats.Indexed8, New BitmapPalette(myCurrentPalette))
    myBitmap.WritePixels(New Int32Rect(0, 0, iWidth, iHeight), iPixel, iWidth, 0)

然后你需要申请:

Image1.Source = myBitmap