首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过C#代码更改自定义WPF控件中的BitmapEffect

如何通过C#代码更改自定义WPF控件中的BitmapEffect
EN

Stack Overflow用户
提问于 2009-12-16 20:57:35
回答 3查看 2.3K关注 0票数 0

我有一个自定义控件类型,比如:<Grid> ... </Grid>和Grid.BitmapEffect属性。如何通过C#代码(例如,在事件中)更改此控件(网格)中的BitmapEffetc?

代码示例-自定义控件的一部分:

代码语言:javascript
复制
[...]
<Grid Background="#FFE5AA">
    <Grid.RowDefinitions>
        <RowDefinition Height="62*"/>            
        <RowDefinition Height="15*"/>
        <RowDefinition Height="23*"/>
    </Grid.RowDefinitions>

    <Grid.BitmapEffect>
        <OuterGlowBitmapEffect GlowColor="#459E5A" GlowSize="13" Noise="0" Opacity="0.9" />
    </Grid.BitmapEffect>

    <Border Grid.Column="0" Grid.Row="0" Grid.RowSpan="3" BorderBrush="#F5B903" BorderThickness="1,1,1,1" >
    </Border>
[...]

然后在Window.xaml中:

代码语言:javascript
复制
<controls:MyControl Name="Control1" Cursor="Hand" MouseDown="Control1_MouseDown" />

然后在C#中:

代码语言:javascript
复制
private void Control1_MouseDown(object sender, MouseButtonEventArgs e)
{
    //there i want to change Control1.BitmapEffect
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-12-16 23:24:10

好了,我知道了!我添加了一个DepencyProperty 'GlowSize‘,并通过它简单地改变光晕的大小。:)运行得很完美。

票数 1
EN

Stack Overflow用户

发布于 2009-12-16 21:08:31

代码语言:javascript
复制
myGrid.BitmapEffect = null;

PS:请注意,BitmapEffect被认为是过时的,应该使用Effect

这是一个基于你的示例的例子,它工作得很好(在我的机器上):只要我在网格中点击,效果就会消失。

XAML:

代码语言:javascript
复制
<Window x:Class="WpfCsApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300">

<Grid Background="#FFE5AA" Margin="10" MouseDown="Grid_MouseDown" x:Name="myGrid">
    <Grid.RowDefinitions>
        <RowDefinition Height="62*"/>
        <RowDefinition Height="15*"/>
        <RowDefinition Height="23*"/>
    </Grid.RowDefinitions>
    <Grid.BitmapEffect>
        <OuterGlowBitmapEffect GlowColor="#459E5A" GlowSize="13" Noise="0" Opacity="0.9" />
    </Grid.BitmapEffect>
    <Border Grid.Column="0" Grid.Row="0" Grid.RowSpan="3" BorderBrush="#F5B903" BorderThickness="1,1,1,1" >
        <TextBlock>Test</TextBlock>
    </Border>
</Grid>
</Window>

代码背后:

代码语言:javascript
复制
public partial class Window1 : Window {
    public Window1() {
        InitializeComponent();
    }

    private void Grid_MouseDown(object sender, MouseButtonEventArgs e) {
        myGrid.BitmapEffect = null;
    }
}

在您的示例中,您可以编写://there i want to change Control1.BitmapEffect。请注意,您需要更改网格的BitmapEffect,而不是Control1的BitmapEffect。

票数 2
EN

Stack Overflow用户

发布于 2011-10-21 18:11:11

这里列出了不同的效果:Different BitmapEffect

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1914519

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档