WPFで問題が発生しました。その中に画像がある削除ボタンを作っています。しかし、ボタンが無効になっているときは、グレースケール画像を表示したかったのです。アルファ付きFormatConvertedBitmap
Thomas Lebrun implementationが見つかりましたが、私のプログラムにクラス全体を追加したくありません。代わりに、私はこの方法で動作を模倣しようとした:
BitmapImage img_Delete = new System.Windows.Media.Imaging.BitmapImage(new Uri("the png URI", UriKind.RelativeOrAbsolute));
ImageSource img_DeleteDisabled = null;
[...]
Button btDel = new Button() { Width = 20, Height = 20, ToolTip = "Delete", Margin = new Thickness(5), HorizontalAlignment = System.Windows.HorizontalAlignment.Right };
btDel.IsEnabled = isdeletable(obj);
if (!btDel.IsEnabled && (img_DeleteDisabled == null))
{
img_DeleteDisabled = new FormatConvertedBitmap(img_Delete, PixelFormats.Gray32Float, null, 0);
}
btDel.Content = (new System.Windows.Controls.Image()
{
Width = 16,
Height = 16,
HorizontalAlignment = System.Windows.HorizontalAlignment.Stretch,
VerticalAlignment = System.Windows.VerticalAlignment.Stretch,
Source = btDel.IsEnabled ? img_Delete : img_DeleteDisabled
});
まあ、私はあなたが表示されます。..除いそれは、期待通りに動作します。
左の1が有効になっています、右のものは無効になります
ご覧のとおり、アルファチャンネルはなくなりました。どうすれば元に戻すことができますか?
アルファチャンネルとは何ですか? – StepUp
アルファチャンネルには透明度情報が含まれています:左には赤い十字が透明な背景を、灰色には黒いものがあります。 – frarugi87
'btDel.Background = Brushes.Transparent; 'を設定しようとしています – StepUp