wpf inkcanvas画笔风格

时间:2013-05-11 21:28:13

标签: c# wpf xaml inkcanvas

我有使用标准Inkcanvas的应用程序。标准应用看起来像 Figure 1.和所有应用程序代码(XAML)都在这里:

<Window x:Class="WpfApplication18.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525">
<Grid>
    <InkCanvas>
        <InkCanvas.DefaultDrawingAttributes>
            <DrawingAttributes x:Name="attribute" Width="40" Height="40" Color="BlueViolet" />
        </InkCanvas.DefaultDrawingAttributes>
    </InkCanvas>
</Grid>

我想知道如何创建非标准的Inkcanvas Brush with Image(Image Mask?),如下所示: Figure 2。我想使用Inkcanvas和简单的“背景”图像进行绘画 (jpg,png或其他)。是否有一个简单的方法来制作它?你能用代码举例吗?

在我的应用程序中,我想在标准的Inkcanvas上进行绘制,之后转换Inkcanvas选择以实现如图2所示(点击按钮后?)

2 个答案:

答案 0 :(得分:0)

没有简单的方法,因为墨水仅支持纯色笔画。

可能会更容易创建一个自定义画布paint on with an ImageBrush如果你想要创建一个完整的墨迹复制品,这是很多工作,但你可能并不是那么糟糕你只需要能画出一些线条。

我考虑过将图像放在墨迹下方,并在墨迹上用透明颜色绘画,但这不会使墨迹的背景透明。

答案 1 :(得分:0)

虽然这是一个旧线程,但我仍然想指出this sample at MSDN

我已经使用NET 4.0 + VS 2010 + Windows 7 x64进行了检查,它可以正常工作(如此image)。它似乎完全符合OP的要求。

它使用DynamicRenderer(msdn.microsoft.com/en-us/library/vstudio/system.windows.input.stylusplugins.dynamicrenderer(v=vs.100).aspx)来实现这一点,就在InkCanvas中没有额外的处理。

您还可以使用InkCanvas进行一些其他自定义(msdn.microsoft.com/en-us/library/vstudio/system.windows.controls.inkcanvas(v=vs.100).aspx):

  • 墨水处理(msdn.microsoft.com/en-us/library/vstudio/ms752076(v=vs.100).aspx)<<李>
  • 自定义渲染(msdn.microsoft.com/en-us/library/vstudio/ms747347(v=vs.100).aspx)<< li>
  • 其他样本(msdn.microsoft.com/en-us/library/vstudio/aa972145(v=vs.90).aspx)./ / li>

问候,哈坎。