标签: inkcanvas

我为什么要在WPF中使用InkCanvas?

在我的WPF应用程序中,我有一些绘图功能.我已经使用Canvas和手动处理鼠标手势解决了这个问题,我还将绘制的Strokes(包装在InkPresenter中)添加到此Canvas中.

使用Blend我突然发现有一种叫做InkCanvas的东西.根据Blend的说法,这是一个"定义接收和显示墨水笔划的区域"的控件.,这听起来与我所做的相关.但是使用普通的Canvas,一切似乎都运行良好.

所以; InkCanvas与普通Canvas有何不同,为什么我应该选择使用它呢?

.net wpf drawing canvas inkcanvas

13
推荐指数
2
解决办法
7103
查看次数

如何在UWP Windows 10应用程序中将InkCanvas渲染为图像?

RenderTargetBitmap简单的帆布+ InkManager(在Windows 8.1)的工作类别,呈现墨水笔划的图像.UWP推出了InkCanvas和一个新的Inking API.但是,它似乎RenderTargetBitmap不起作用.当我尝试使用RenderAsync方法捕获墨迹笔划时,没有墨迹笔划仅渲染其他对象,如Rectangle等.

这是一个错误还是这个新的API不是以这种方式使用的?如果没有,那我怎样才能渲染图像InkCanvas

谢谢!

c# xaml inkcanvas rendertargetbitmap uwp

13
推荐指数
1
解决办法
7297
查看次数

在UWP墨水画布上显示背景图像

我在我的UWP应用程序中有一个InkCanvas,并希望显示一个图像(理想情况下是Canvas的一部分,但除此之外,以某种方式覆盖它(我的想法是我可以将更改的图像保存回图像文件). WPF似乎允许InkCanvas有孩子,但在UWP似乎不可能.我尝试了以下内容:

        <InkCanvas x:Name="drawInkCanvas">
            <Image Source="{Binding DrawingImage}"/>

        </InkCanvas>
Run Code Online (Sandbox Code Playgroud)

但这不起作用; 我也试过这个:

        <Grid Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2">
            <InkCanvas x:Name="drawInkCanvas" Opacity=".5"/>
            <Image Source="{Binding DrawingImage}" Opacity=".5"/>

        </Canvas>
Run Code Online (Sandbox Code Playgroud)

公平地说,我对此没有太大的期望; 无论如何,虽然它确实有点工作,但它使图像和InkCanvas看起来都不对,显然,我不允许保存生成的图像.

理想情况下,会有背景图像或类似的东西.有什么我可以用来实现这一目标; 我认为我可能不得不用标准画布替换InkCanvas,然后重新编写所有InkCanvas功能!

c# inkcanvas win-universal-app

7
推荐指数
1
解决办法
4238
查看次数

为什么ActualWidth和ActualHeight从0,0开始?

我想添加WPF路径InkCanvas并使用选择来选择WPF路径.所以,我使用这段代码.

System.Windows.Shapes.Path path = drawCanvas.Children[i] as System.Windows.Shapes.Path;    
drawCanvas.Children.RemoveAt(i);
inkCanvas.Children.Add(path);
Run Code Online (Sandbox Code Playgroud)

这是输出.我必须从0,0中选择WPF Path,因为ActualwidthActualHeight从0,0开始.

替代文字

如何选择绝对WPF路径?

谢谢

编辑:

现在,我可以使用此代码绝对选择它.

System.Windows.Shapes.Path path = drawCanvas.Children[i] as System.Windows.Shapes.Path;
drawCanvas.Children.RemoveAt(i);
path.Margin = new Thickness(-getMinX(path), -getMinY(path), 0, 0);
containPath.Children.Add(path);
containPath.Width = getMaxX(path) - getMinX(path);
containPath.Height = getMaxY(path) - getMinY(path);
containPath.Margin = new Thickness(getMinX(path), getMinY(path), 0, 0);
inkCanvas.Children.Add(containPath);
Run Code Online (Sandbox Code Playgroud)

wpf selection inkcanvas actualwidth actualheight

6
推荐指数
1
解决办法
2262
查看次数

如何在通用Windows平台(Windows 10)应用程序中擦除InkCanvas笔划?

使用通用Windows平台(UWP)使用InkCanvas控件我似乎无法确定在使用InkCanvas时擦除墨迹笔划的正确方法 - 可以处理事件"StrokeErased".

理想情况下,将使用"InkCanvas.EditingMode"值设置为"InkCanvasEditingMode.EraseByPoint"或"InkCanvasEditingMode.EraseByStroke"的"InkCanvasEditingMode",但这些在Windows 10下的InkCanvas中不可用.

示例https://github.com/Microsoft/Windows-universal-samples/tree/master/simpleink提到"擦除墨迹笔划",但该示例只处理StrokeErased事件而没有实际支持擦除它们,我可以看到,我错过了什么?

c# inkcanvas win-universal-app windows-10

6
推荐指数
1
解决办法
2217
查看次数

MVVM绑定到InkCanvas

我好像遇到了路障.我们正在使用带有Prism的MVVM,并且拥有一个需要Ink Canvas的View.我创建了一个从我的ViewModel绑定到View的StrokeCollection.我可以从我的viewmodel设置集合,但是当用户绘制时,更改不会出现在ViewModel中.有没有办法让这项工作?

我的ViewModel中的My Property如下:

private StrokeCollection _strokes;
public StrokeCollection Signature
{
     get
     {
         return _strokes;
     }
     set
     {
         _strokes = value;
         OnPropertyChanged("Signature");
     }
}
Run Code Online (Sandbox Code Playgroud)

这是我的XAML绑定线:

<InkCanvas x:Name="MyCanvas" Strokes="{Binding Signature, Mode=TwoWay}" />
Run Code Online (Sandbox Code Playgroud)

出于某种原因,显然InkCanvas从未通知ViewModel任何变化.

wpf mvvm inkcanvas

5
推荐指数
1
解决办法
4105
查看次数

将WPF InkCanvas保存为JPG - 图像正在被裁剪

我有一个WPF InkCanvas控件,我用它来捕获我的应用程序中的签名.控件看起来像这样 - 它是700x300

alt text http://img156.imageshack.us/img156/7885/inkcanvas.jpg

但是,当我将其保存为JPG时,生成的图像看起来像这样,也是700x300

替代文字http://img210.imageshack.us/img210/5668/saved.jpg

我用来保存的代码

            sigPath = System.IO.Path.GetTempFileName();

            MemoryStream ms = new MemoryStream();
            FileStream fs = new FileStream(sigPath, FileMode.Create);

            RenderTargetBitmap rtb = new RenderTargetBitmap((int)inkSig.Width, (int)inkSig.Height, 96d, 96d, PixelFormats.Default);
            rtb.Render(inkSig);
            JpegBitmapEncoder encoder = new JpegBitmapEncoder();
            encoder.Frames.Add(BitmapFrame.Create(rtb));

            encoder.Save(fs);
            fs.Close();
Run Code Online (Sandbox Code Playgroud)

这是我正在使用的XAML:

<Window x:Class="Consent.Client.SigPanel"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Background="Transparent" Topmost="True" AllowsTransparency="True"
Title="SigPanel" Left="0" Top="0" Height="1024" Width="768" WindowStyle ="None" ShowInTaskbar="False" ResizeMode="NoResize" WindowStartupLocation="CenterScreen" >

<Border BorderThickness="1" BorderBrush="Black" Background='#FFFFFFFF' x:Name='DocumentRoot' Width='750' Height='400' CornerRadius='10'>
    <StackPanel HorizontalAlignment="Center" VerticalAlignment="Center">
        <TextBlock Name="txtLabel" FontSize="24" HorizontalAlignment="Center" >Label</TextBlock>
        <InkCanvas Opacity="1" Background="Beige" …
Run Code Online (Sandbox Code Playgroud)

wpf image inkcanvas

5
推荐指数
2
解决办法
1万
查看次数

如何从inkcanvas直接获取位图图像(在wpf中)

我正在做一个 OCR 项目。我必须从inkcanvas 中的输入中获取图像以在下一步中进行处理,即将该图像转换为二维数组。

我对如何从inkcanvas 获取位图图像进行处理感到困惑。我一直在从许多来源寻找解决方案,但其中很多只是将inkcanvas 保存到文件流中。

请帮我!非常感谢

c# ocr wpf inkcanvas

5
推荐指数
1
解决办法
3944
查看次数

阻止 InkCanvas 在绘图时调整大小

在我的应用程序中,我有一个InkCanva背景带有图像的 s 。InkCanvas当我在底部或左侧边缘绘制时,InkCanvas会更改大小以适合草图,这会扰乱背景中图像的渲染。InkCanvas当笔划超出其当前大小时,如何阻止调整大小?

当前的 XAML:

<InkCanvas x:Name="DrawingArea"
           Width="Auto"
           Height="Auto"
           ClipToBounds="True"
           Background="{x:Null}" />
Run Code Online (Sandbox Code Playgroud)
  • 背景在代码隐藏中设置

wpf resize inkcanvas

5
推荐指数
1
解决办法
1549
查看次数

将UWP Ink Strokes保存为SVG

有没有办法将UWP InkCanvas中的InkStrokes保存为SVG?

我已经将它们保存为'GifWithEmbeddedIsf'格式,这对于在另一个InkCanvas中重新加载墨迹数据很有用,但我的问题是当我使用Gif在Web客户端中显示Ink Strokes时.此Gif与在UWP应用程序中显示InkStrokes的质量不同[在放大时尤为明显].

我已经在WPF应用程序中找到了这个答案,但UWP中没有相同的API [或者我还没有找到它].

svg inkcanvas uwp

5
推荐指数
0
解决办法
230
查看次数