Я хотел бы использовать прозрачный файл png на кнопке silverlight. Кроме того, я хотел бы, чтобы сама кнопка была прозрачной, чтобы виден был фон (за кнопкой). Я обнаружил, что если я устанавливаю непрозрачность кнопки, это также влияет на изображение. Я не хочу, чтобы все изображение было прозрачным - только прозрачные его части, как определено в PNG.
Есть идеи о том, как это можно сделать?





Silverlight поддерживает прозрачность PNG. Это работает:
<UserControl x:Class = "SilverlightApplication17.Page"
xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x = "http://schemas.microsoft.com/winfx/2006/xaml"
Width = "400" Height = "300">
<Grid x:Name = "LayoutRoot" Background = "Green">
<Button Width = "200" Height = "200">
<Button.Content>
<Image Source = "http://wildermuth.com/images/tx_head.png" />
</Button.Content>
</Button>
Вы должны увидеть, что изображение с обратной стороны кнопки прозрачно. Если вы хотите, чтобы кнопка была прозрачной, вам нужно создать шаблон кнопки, который будет прозрачным. Ссылка в ответе texmex5 - нисходящая.
Из моих последующих исследований кажется, что не все прозрачные PNG будут работать. Они должны быть прозрачными на основе альфа-канала (а не на основе палитры). Они также должны быть не менее 16-битными изображениями. Стандартный 8-битный не работает.
<UserControl x:Class = "MyProject.SilverlightControl1"
xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x = "http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d = "http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc = "http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:i = "clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
mc:Ignorable = "d"
d:DesignHeight = "300" d:DesignWidth = "400">
<Grid x:Name = "LayoutRoot" Background = "Green">
<Image Width = "18" Height = "18" DataContext = "{Binding PrintMovementCommand}" Source = "{Binding IconSource}" VerticalAlignment = "Center" HorizontalAlignment = "Center" ToolTipService.ToolTip = "{Binding Title}" Cursor = "Hand">
<i:Interaction.Triggers>
<i:EventTrigger EventName = "MouseLeftButtonUp">
<i:InvokeCommandAction Command = "{Binding Command}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</Image>
</Grid>
</UserControl>