WPF FAQ - Visual Layer

How do I apply Transform when an event is occurred ?

This can be done with the following code snippets.

[XAML]
<StackPanel Name="SampleStackPanel" MouseEnter="SampleStackPanel_MouseEnter" MouseLeave="SampleStackPanel_MouseLeave" >
        <StackPanel.RenderTransform>
            <ScaleTransform x:Name="myScaleTransform" ScaleX="1" ScaleY="1" />
        </StackPanel.RenderTransform>
        <TextBlock Text="This is test for render transform"/>
</StackPanel>
  
  
[C#]
private void SampleStackPanel_MouseEnter(object sender, MouseEventArgs e)
{
    myScaleTransform.ScaleX = myScaleTransform.ScaleY = 2;
}
  
private void SampleStackPanel_MouseLeave(object sender, MouseEventArgs e)
{
    myScaleTransform.ScaleX = myScaleTransform.ScaleY = 1;
}

Reference link: https://docs.microsoft.com/en-us/dotnet/framework/wpf/graphics-multimedia/how-to-apply-a-transform-to-an-element-when-an-event-occurs

Permalink
In what way CombinedGeometry is used ?

CombinedGeometry is used to combine two geometries. By updating the GeometryCombineMode property, along with Union, Intersect, Exclude and Xor options, we can achieve CombinedGeometry. This can be done with the following code snippets.

[XAML]
<Path Stroke="Black" StrokeThickness="1" Fill="Blue">
    <Path.Data>
        <CombinedGeometry GeometryCombineMode="Xor">
            <CombinedGeometry.Geometry1>
                <EllipseGeometry RadiusX="70" RadiusY="40" Center="50,50" />
            </CombinedGeometry.Geometry1>
            <CombinedGeometry.Geometry2>
                <EllipseGeometry RadiusX="50" RadiusY="30" Center="50,50" />
            </CombinedGeometry.Geometry2>
        </CombinedGeometry>
    </Path.Data>
</Path>

Reference link: https://docs.microsoft.com/en-us/dotnet/framework/wpf/graphics-multimedia/how-to-create-a-combined-geometry

Permalink
How do I apply BitmapEffect to a particular area of an Image ?

BitmapEffect can be applied to a particular area of an Image using the ‘BitmapEffectInput’ property of the ‘Image’ class. ‘AreaToApplyEffect’ property of the BitmapEffectInput markup extension is used to specify the area and ‘AreaToApplyEffectUnits’ property is used to specify the units.

The following lines of code are used to apply BitmapEffect to a lower part of the image.

[XAML]

<Image Source='pda.ico' Height='160' Width='160'>
<Image.BitmapEffect>
      	<BevelBitmapEffect BevelWidth='10' EdgeProfile='BulgedUp'/>
</Image.BitmapEffect>
<Image.BitmapEffectInput>
<BitmapEffectInput AreaToApplyEffect='0,0.5,1,0.5' AreaToApplyEffectUnits='RelativeToBoundingBox'/>
</Image.BitmapEffectInput>
</Image>
Permalink
How do I use DrawingVisual object ?

In order to use DrawingVisual objects, you need to create a host container to store the DrawingVisual objects. Find the following code snippets,

[C#]
public class VisualHostContainer : FrameworkElement
{
    private VisualCollection _myVisualCollection;
 
    public VisualHostContainer()
    {
        _myVisualCollection = new VisualCollection(this);
        _myVisualCollection.Add(CreateDrawingVisualRectangle());
        _myVisualCollection.Add(CreateDrawingVisualText());
    }
}

Reference link: https://docs.microsoft.com/en-us/dotnet/framework/wpf/graphics-multimedia/using-drawingvisual-objects

Permalink
Can I host WPF objects in WIN32 application ?

Yes. VisualObjects of WPF application can be hosted in WIN32 application using the “HwndSource” class. The HwndSource class wraps the objects in the WPF application and allow them to be incorporated in the WIN32 application as a child window.

Permalink
How HitTest methods in VisualTreeHelper is useful ?

HitTest methods are used to determine whether a point or geometry value is within the content of a rendered object like a control or graphic element. Using the ’HitTest’ methods you can determine whether the mouse was clicked within a control and also by overriding the implementation, custom actions can be performed.

Permalink