Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >无法在BitmapImage上定位InkCanvas

无法在BitmapImage上定位InkCanvas
EN

Stack Overflow用户
提问于 2014-05-24 18:42:06
回答 1查看 754关注 0票数 0

我已经阅读了我所能找到的一切,但无法解决这个问题。我的目标是从InkCanvas中捕获笔画并将其转换为Path。从路径中,将BitmapImage返回到Image控件,并将Image控件放置在InkCanvas上的任意位置。

如果我在InkCanvas上写了一个"< >",我会得到以下结果:

  1. 只有笔画的左边"<“显示为位图。(没有看到">")。
  2. "<“区域外的区域是黑色的--不透明。
  3. 我想不出一种简单的方法把这条路缩小到画出来的笔画上。也就是说,我看不出如何在绘制的"<>“的上方和左边裁剪空格。

从窗口看,这是我用来操作Image的代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    void MakeFigure_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
    {
        ShapeMaker shapemaker = new ShapeMaker();
        System.Windows.Shapes.Path myshape = shapemaker.StrokesToPath(InkCanvas.Strokes);
        InkCanvas.Strokes.Clear();

        Image image = new Image();
        ImageSource img = shapemaker.PathToBitmapImage(myshape);
        image.Source = img;
        image.Width = img.Width;
        image.Height = img.Height;
        InkCanvas.Children.Add(image);
        InkCanvas.SetLeft(image, 800);
        InkCanvas.SetTop(image, 400);
    }

    public Path StrokesToPath(StrokeCollection strokeCollection)
    {
        Path path = new Path();
        PathGeometry pathGeo = new PathGeometry();

        foreach (Stroke stroke in strokeCollection)
        {
            StylusPointCollection strokepoints = stroke.StylusPoints;

            PathFigure pathFig = new PathFigure();
            pathFig.StartPoint = new Point(strokepoints[0].X, strokepoints[0].Y);

            for (int i = 1; i < strokepoints.Count; i++)
            {
                pathFig.Segments.Add( new LineSegment()
                {
                     Point = new Point(strokepoints[i].X, strokepoints[i].Y)
                });
            }

            pathGeo.Figures.Add(pathFig);
        }

        path.Data = pathGeo;
        path.Stroke = Brushes.White;       
        path.StrokeThickness = 4;           

       return path;
    }

    public BitmapImage PathToBitmapImage(Path path)
    {
       var bounds = path.Data.GetRenderBounds(null);
       path.Measure(bounds.Size);
       path.Arrange(bounds);

        RenderTargetBitmap rtb = new RenderTargetBitmap(
          (int)bounds.Width *4 , (int)bounds.Height*4 , 96, 96, PixelFormats.Pbgra32);
        rtb.Render(path);

        JpegBitmapEncoder encoder = new JpegBitmapEncoder();
        BitmapImage bi = new BitmapImage();

        encoder.Frames.Add(BitmapFrame.Create(rtb));

        using (var stream = new System.IO.MemoryStream())
        {
            encoder.Save(stream);
            stream.Seek(0, System.IO.SeekOrigin.Begin);

            bi.BeginInit();
            bi.CacheOption = BitmapCacheOption.OnLoad;
            bi.StreamSource = stream;
            bi.EndInit();
            bi.Freeze();
        }

        return bi;
    }
EN

回答 1

Stack Overflow用户

发布于 2014-05-25 00:26:52

替换

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Canvas.SetLeft(image, 800);
Canvas.SetTop(image, 400);

使用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
InkCanvas.SetLeft(image, 800);
InkCanvas.SetTop(image, 400);

InkCanvas不从画布继承并公开它自己的附加属性。因此,您需要调用InkCanvas方法,而不是画布方法。

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

https://stackoverflow.com/questions/23851522

复制
相关文章
perf基本使用功能
用于实时显示当前系统的性能统计信息。该命令主要用来观察整个系统当前的状态,比如可以通过查看该命令的输出来查看当前系统最耗时的内核函数或某个用户进程
233333
2022/09/26
8320
使用Jmeter进行功能和性能测试
Jmeter 的工作原理是仿真用户向服务器发送请求,并收集服务器应答信息并计算统计信息。
鱼找水需要时间
2023/04/09
1.9K0
使用Jmeter进行功能和性能测试
【软件测试】使用QTP进行功能测试
测试QTP自带的C/S应用程序Flight.exe。 Flight应用程序登录模块需求说明:用户名、密码均为长度至少为4位的非空字符,密码值为mercury。针对用户名、密码的不同出错情况,有不同的错误信息提示(详见Flight.exe)。 (1)针对Flight范例程序,使用等价类划分法完成登录模块的测试用例设计,写出测试用例表Login_TestCases; (2)对用户登录过程进行脚本录制,回放无误后,保存测试脚本为login_Test1。   (3)打开脚本login_Test1,编辑脚本(提示:用到了参数化、VBScript的if结构、添加操作步骤等知识点),使用测试用例表Login_TestCases,完成对Flight程序登录模块的测试,运行测试无误后保存测试脚本为login_Test2。 (4)导出word类型测试报告,保存为LoginTest_Report。 (5)在学习通实验报告题目2中上传一个Word类型附件,其中包含:测试用例表Login_TestCases,测试脚本login_Test1,测试脚本login_Test2,测试报告LoginTest_Report。
NorthS
2023/03/21
1.2K0
perf和火焰图使用方法
perf是linux上的性能分析工具,perf可以对event进行统计得到event的发生次数,或者对event进行采样,得到每次event发生时的相关数据(cpu、进程id、运行栈等),利用这些数据来对程序性能进行分析。
嵌入式与Linux那些事
2023/03/24
3.8K0
perf和火焰图使用方法
使用LoadRunner进行并发测试、压力测试和负载测试
负载测试:找到系统最大的负载能力(通过给系统不断的施压达到饱和状态不能加压为止)
全栈程序员站长
2022/09/09
3K0
使用LoadRunner进行并发测试、压力测试和负载测试
相位测量仪的使用详解
在现代高科技的电子技术中,相位数是最基本的参数之一,相位的准确性就直接与许多其他外参量的测量方案、测量结果都有十分密切的关系,因此相位的准确测量就会显得更为重要。测量相位的方法有多种其中电子计数器测量相位具有精度高、使用方便、测量迅速,以及便于实现测量过程自动化等优点,也同时是相位测量的重要手段之一,其中SYN5607型相位计显得尤为重要。
时频专家
2020/10/30
2.1K0
相位测量仪的使用详解
使用Microsoft.AspNetCore.TestHost进行完整的功能测试
  Microsoft.AspNetCore.TestHost是可以用于Asp.net Core 的功能测试工具。很多时候我们一个接口写好了,单元测试什么的也都ok了,需要完整调试一下,检查下单元测试未覆盖到的代码是否有bug。步骤为如下:程序打个断点->F5运行->通常需要登录个测试账号->查找要调试api的入口->获得断点开始调试=>代码报错?很多时候需要停止调试修改->回到第一步。如此反复循环,做着重复的工作,Microsoft.AspNetCore.TestHost正是为了解决这个问题,它可以让你使用xTest或者MSTest进行覆盖整个HTTP请求生命周期的功能测试。
顾翔
2019/12/11
9240
使用Microsoft.AspNetCore.TestHost进行完整的功能测试
使用locust进行Websocket压力测试和接口压力测试
如果你正在测试一个网站的性能,这个网站是以分层的方式构建的,包括部分和子部分,那么以同样的方式构建负载测试可能会很有用。为此,locust提供了任务集类。它是将执行的任务的集合,与直接在用户类上声明的任务非常相似。
码客说
2022/01/17
6.8K0
使用locust进行Websocket压力测试和接口压力测试
干货 | 搞定 perf 和 gpertools
在Linux下开发是幸福的,尤其是在发生问题的时候。永远忘不了在Windows下应用发生问题时那种无助的感觉。
xjjdog
2021/04/16
3.7K0
干货 | 搞定 perf 和 gpertools
使用Calabash进行Android和iOS UI测试
因为各种事,这篇本来属于上周的拖到了就今天,一篇关于移动端测试工具Calabash的文章,看着篇幅比较小,就接受了。本身精力不在Android和iOS开发,所以也就没按部就班的复原教程中的实例,仅当开阔视野了。
WindCoder
2018/09/19
2.1K0
使用Calabash进行Android和iOS UI测试
使用doctest进行测试
python中的doctest可以运行文档中嵌入的例子,并验证它们能否生成所期望的结果,从而对源代码进行测试。
用户2936342
2018/08/27
1.2K0
使用 postman 进行接口测试
postman 测试接口非常方便,接下来就开始测试 postman 的一些简单用法。
Python碎片公众号
2021/02/26
2.2K0
使用 postman 进行接口测试
使用LoadRunner进行压力测试
本质就是在loadrunner上模拟多个用户同时按固定行为访问web站点。其中固定行为在loadrunner中是通过录制脚本定义的,多个用户同时访问的策略是在loadrunner的场景中定义的
全栈程序员站长
2022/09/07
1K0
使用LoadRunner进行压力测试
使用stress进行压力测试
stress是一款压力测试工具,可以用它来对系统CPU,内存,以及磁盘IO生成负载。
全栈程序员站长
2022/11/18
1.2K0
使用wrk进行压力测试
最近需要对新的服务进行压力测试。比较了ab和jemeter以及wrk。最终选择wrk来作为压力测试工具,可以把cpu压到100%。
Ryan-Miao
2019/01/02
2.1K0
使用Fiddler进行Mock测试
1)在web session 面板中找到对应的请求,然后将其拖到AutoResponder面板中。
全栈程序员站长
2022/08/31
1.4K0
使用Fiddler进行Mock测试
使用 JMeter 进行压力测试
压力测试是每一个Web应用程序上线之前都需要做的一个测试,他可以帮助我们发现系统中的瓶颈问题,减少发布到生产环境后出问题的几率;预估系统的承载能力,使我们能根据其做出一些应对措施。所以压力测试是一个非常重要的步骤,下面我带大家来使用一款压力测试工具JMeter。
庞小明
2019/05/25
1.7K0
使用 JMeter 进行压力测试
一.前言 压力测试是每一个Web应用程序上线之前都需要做的一个测试,他可以帮助我们发现系统中的瓶颈问题,减少发布到生产环境后出问题的几率;预估系统的承载能力,使我们能根据其做出一些应对措施。所以压力测试是一个非常重要的步骤,下面我带大家来使用一款压力测试工具JMeter。 二.关于JMeter Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。 它可以用于测试静态和动态资源,例如静态文件、Java 小
晓晨
2018/06/22
1.8K0
如何使用MyJWT对JWT进行破解和漏洞测试
MyJWT是一款功能强大的命令行工具,MyJWT专为渗透测试人员、CTF参赛人员和编程开发人员设计,可以帮助我们对JSON Web Token(JWT)进行修改、签名、注入、破解和安全测试等等。
FB客服
2021/03/09
3.3K0
使用Angular CLI进行单元测试和E2E测试
单元测试. angular cli使用karma进行单元测试. 首先执行ng test --help或者ng test -h查看帮助. 执行测试的话就执行ng test即可, 它会执行项目里所有的.s
solenovex
2018/03/29
2.8K0
使用Angular CLI进行单元测试和E2E测试

相似问题

在ApacheJ测量仪中执行基于Java的Selenium WebDriver测试

12

如何解决ApacheJ测量仪安装错误?

20

如何在PKS (枢轴-容器-服务)上安装ApacheJ测量仪

15

用j测量仪进行特征测试

11

如何用JPOS库对外围设备进行测试和仿真

32
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文