在 .Net 中使用 GDI+ 勾勒出路径

2023-11-22

如何使用 GDI+ 绘制图形路径?例如,我将两个相交的矩形添加到 GraphicsPath 中。我只想绘制所得图形路径的轮廓。

请注意,我不想填充该区域,我只想绘制轮廓。

Example: https://i.stack.imgur.com/IAVft.png


没有有效的方法来绘制大纲。然而,GDI+ 确实有一个名为 GdipWindingModeOutline 的函数可以完全做到这一点。这是MSDN参考这段代码可以解决这个问题:

// Declaration required for interop
[DllImport(@"gdiplus.dll")]
public static extern int GdipWindingModeOutline( HandleRef path, IntPtr matrix, float flatness );

void someControl_Paint(object sender, PaintEventArgs e)
{
    // Create a path and add some rectangles to it
    GraphicsPath path = new GraphicsPath();
    path.AddRectangles(rectangles.ToArray());

    // Create a handle that the unmanaged code requires. nativePath private unfortunately
    HandleRef handle = new HandleRef(path, (IntPtr)path.GetType().GetField("nativePath", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(path));
    // Change path so it only contains the outline
    GdipWindingModeOutline(handle, IntPtr.Zero, 0.25F);
    using (Pen outlinePen = new Pen(Color.FromArgb(255, Color.Red), 2))
    {
        g.DrawPath(outlinePen, path);
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 .Net 中使用 GDI+ 勾勒出路径 的相关文章

  • Rx Framework:在超时时执行操作,而不中断原始可观察序列

    给定一个可观察的源 通过轮询低级设备的 变化 状态生成 observable source metacode IObservable
  • 使用inotify监控文件

    我正在使用 inotify 来监视本地文件 例如使用 root temp inotify add watch fd root temp mask 删除该文件后 程序将被阻止read fd buf bufSize 功能 即使我创建一个新的 r
  • .NET 进程分配的内存何时释放回 Windows

    设置 NET 在启动时以及在收集后尝试满足分配请求时 分段为每一代的堆 0 1 2 LOH 分配内存 以获得连续的内存块 为每个堆分配的内存可能会随着应用程序 预热 而趋于平稳 但第 2 代和大型对象堆可能除外 在垃圾收集期间 每个堆 0
  • C++ 中的字符串到 LPCWSTR

    我正在尝试从字符串转换为 LPCWSTR 我使用多位 1 例如 LPCWSTR ToLPCWSTR string text LPCWSTR sw LPCWSTR text c str return sw 2 返回中文字符 LPCWSTR T
  • 堆栈独立的C/C++蓝牙API?

    我想知道是否有适用于 Windows XP Vista 7 x86 和 x64 的堆栈独立 C C 蓝牙 api 我的目标是创建连接并通过蓝牙发送 接收一些时间关键的数据 我的研究给了我以下选择以及这项任务的缺点 用于蓝牙的 Windows
  • 使用 std::string 导致 Windows“找不到入口点”[重复]

    这个问题在这里已经有答案了 当我用 G C C 编译它时 include
  • WCF 版本控制枚举

    我开始编写一些需要向前兼容和版本控制的 WCF 数据协定 我一直在阅读 MSDN 文章here http msdn microsoft com en us library ms733832 aspx 并且想知道是否有人对有关枚举的第 14
  • C# 列表框 ObservableCollection

    我正在尝试使用 ListBox DataSource ObservableCollection 但是我不知道如何在 OC 更新时让列表框自动更新 我可以在 OC 上挂接 CollectionChanged 事件 但是我需要对列表框执行什么操
  • 外部组件中的控制器上的 404

    我在解决 Asp Net MVC 4 项目中的 404 响应时遇到问题 它是在 VS2012 中构建的 目标版本为 4 5 我已将预编译的视图和控制器内置到独立的 DLL 中 我能够动态加载 DLL 并从我的核心项目中检查它们 甚至调用它们
  • 在 C# 中使用 as 关键字与泛型类型发生冲突的编译时行为

    当尝试对无法转换为的非泛型类型使用 C as 关键字时 编译器会给出无法转换类型的错误 但是 当对泛型类型使用 as 关键字时 编译器不会给出错误 public class Foo public class Bar
  • C#中如何将委托转换为对象?

    我正在使用反射类来调用其他 dll 上的一些方法 方法的参数之一是委托类型 我想通过使用反射来调用这个方法 所以我需要将函数参数作为对象数组传递 但我找不到任何关于 如何将委托转换为对象 提前致谢 委托是一个对象 只需像平常一样创建预期的委
  • 在 C# 4.0 中,是否可以从泛型类型参数派生类?

    我一直在尝试这个 但我似乎无法弄清楚 我想做这个 public abstract class SingletonType
  • 为什么 C# 编译的正则表达式比等效的字符串方法更快?

    每次我必须对字符串执行简单的包含或替换操作 其中我正在搜索的术语是固定值 时 我发现如果我获取示例输入并对其进行一些分析 则使用编译的正则表达式是几乎 总是比使用 String 类中的等效方法更快 我尝试过比较多种方法 hs是要搜索的 干草
  • C++ 静态工厂构造函数

    我正在进行模拟 它需要创建多个相当相似的模型 我的想法是有一个名为 Model 的类并使用静态工厂方法来构造模型 例如 模型 createTriangle or 模型 createFromFile 我从以前的 java 代码中汲取了这个想法
  • g++4.9 不支持 std::align

    在学习对齐问题等时 我意识到我的 g 4 9 macports OS X 实现不支持std align 如果我尝试编译 使用 std c 11 此示例代码来自http www cplusplus com reference memory a
  • 如何在OpenGL中像这样绘制连接的带状线

    我想用以下方式绘制一系列连接线 GL LINE STRIP 我尝试过自己编写代码 但没有得到想要的结果 所以我来到这里 帮助我找出我错在哪里 这里我只给出我的draw 函数 glBegin GL LINE STRIP glVertex2f
  • 第一个随机数始终小于其余随机数

    我碰巧注意到 在 C 中 使用 std rand 方法调用的第一个随机数大多数时候都明显小于第二个随机数 关于 Qt 实现 第一个几乎总是小几个数量级 qsrand QTime currentTime msec qDebug lt lt q
  • C中的pipe()和fork()

    我需要创建两个子进程 一个子进程需要运行命令 ls al 并将其输出重定向到下一个子进程的输入 而下一个子进程又将对其输入数据运行命令 sort r n k 5 最后 父进程需要读取该数据 已排序的数据 并将其显示在终端中 终端中的最终结果
  • TypeScript 中 C# 类虚拟成员的等效项

    因此 在 C 中 当我创建模型类和延迟加载内容时 我会执行以下操作 public int User ID get set public int Dept ID get set 然后在我的班级稍远一点的地方 我像这样弹出我的虚拟 public
  • Android NDK - 仅用 C/C++ 编写

    有没有一种可能的方法可以使用 C C 编写整个 NDK 应用程序 而无需像 hello jni 示例项目 HelloJni java 中那样的 Java 入门 类 以某种方式创建一个 HelloJni c 来执行相同的操作 从 Androi

随机推荐

  • 导致其他标签呈现为纯文本的 HTML 标签[重复]

    这个问题在这里已经有答案了 我想向页面添加一个区域 其中所有动态内容都呈现为纯文本而不是标记 例如
  • C# 使用 CredWrite 访问 C$

    我正在尝试使用没有该服务器权限的域帐户访问该服务器的 C 我需要以本地登录的形式保存该服务器的凭据 以便程序正常工作 如何使用 CredWrite 保存这些凭据 我找到的凭证管理器类 编辑 以下是功能代码 using System usin
  • Laravel 4 Eloquent ORM 通过动态属性访问一对一关系

    我试图在 Users 表和 User profiles 表之间建立一个非常简单的关系模型 每个用户都有一个 user profile 因此是简单的一对一 根据文档发现 http four laravel com docs eloquent
  • 在 XAML 中更改 ToolBarItem 的颜色

    我在我的应用程序中添加了一个工具栏项 但是我没有看到更改其背景和文本颜色的方法
  • 可以使用jquery动态添加注释到代码中吗?

    I tried 但由于我不知道的原因它不起作用 谁能帮助我理解为什么它不起作用以及我该如何做 谢谢 非常感谢 看起来你正在尝试用 class消失 使用 hide 反而 仅当浏览器首次加载页面时才会解析注释 因此添加注释不会注释掉某些内容 您
  • jQuery $.get/$.ajax 传递 HTTP 状态代码 200,而不是预期的状态代码 201 或 202

    我有一个从同一 URL 返回 HTTP 状态代码 200 201 和 202 的服务器 在 Chrome 中 我已通过网络调试面板确认状态代码符合我的预期 即 200 201 或 202 我依靠该状态代码来确定下一步 我希望 jQuery
  • 这不是一个元组吗?

    我不明白我在这里做错了什么 我的错误是 在 admin 处配置不正确类别管理字段 必须是列表或元组 CategoryAdmin fields 不是一个元组吗 我读错了吗 admin py class CategoryAdmin admin
  • 如何将语言环境字符串(货币)转换回数字?

    我在用着toLocaleString https developer mozilla org en US docs Web JavaScript Reference Global Objects Number toLocaleString转
  • 如何使用 jQuery 将事件附加到动态 HTML 元素? [复制]

    这个问题在这里已经有答案了 假设我有一些 jQuery 代码 将事件处理程序附加到具有类的所有元素 myclass 例如 function myclass click function do something 我的 HTML 可能如下所示
  • 如何将受信任的 CA 证书(不是客户端证书)添加到 HttpWebRequest?

    我写了一个 C 程序 使用HttpWebRequest连接到 HTTPS 站点 这GetResponse 方法抛出异常 系统错误 底层连接已关闭 无法建立 SSL TLS 安全通道的信任关系 我可以使用连接到同一个网站curl exe ca
  • 更新失败时Mysql事务回滚

    通过简单的交易 START TRANSACTION UPDATE posts SET status approved where post id id AND status approved other queries COMMIT 我只想
  • 为什么PHP的md5与OpenSSL的md5不同?

    我很困惑为什么我在 PHP 和 OpenSSL 中看到不同的 md5 哈希结果 这是我正在运行的代码 php r echo md5 abc 结果 900150983cd24fb0d6963f7d28e17f72 虽然这样 echo abc
  • Carbon 解析日期格式

    我正在尝试解析格式如下的日期 2017 09 20T10 59 10 0000000 01 00 我正在使用碳 所以我尝试了 Carbon createFromFormat Y m dTH i s u vP date 哪个输出 The ti
  • 在java中生成没有重复的变体/排列

    我必须生成所有不重复的数字 0 9 的变体 它们的长度可能从1到10 我真的不知道如何解决它 特别是如何避免重复 例子 变化长度 4 随机变化 9856 8753 1243 1234 等 但不是 9985 包含重复 你能帮我么 或者你能给我
  • std::transform() 和 toupper(),没有匹配的函数

    我尝试了这个问题的代码C std transform 和 toupper 为什么会失败 include
  • 如何打印出字符串并在一行中列出-python

    a 1 2 3 print the list is a 我想打印出这样的一行 the list is 1 2 3 我不能在一行内完成它 我必须这样做 print the list is print a 我想知道是否可以在一行中打印出与字符串
  • 具有多个命名参数的 PDO bindParam()

    PDO 不能使用单个 bindParam 将值绑定到查询中多次出现的参数吗 我很惊讶 我认为这是可能的 但我没有在 php 文档上找到任何关于此的信息 在网络上也没有 欢迎任何澄清 替代方案 注意 我使用的是 php 5 3 6 5 3 8
  • 使用 awk 更改字符串的大小写

    我是 awk 新手 所以请耐心等待 目标是更改字符串的大小写 使每个单词的第一个字母大写 其余字母小写 为了使示例简单 单词 在这里被定义为严格的字母字符 所有其他字符都被视为分隔符 我从本网站的另一篇文章中学到了一种使用以下 awk 命令
  • 使用 httpInterceptor 和 AngularJS 1.1.5 实现加载微调器

    我在这里找到了一个用于 http resource 调用的加载微调器的示例 在 httpIntercept 上设置 rootScope 变量 笨蛋 http plnkr co edit 32Mh9UOS3Z4vnOtrH9aR p prev
  • 在 .Net 中使用 GDI+ 勾勒出路径

    如何使用 GDI 绘制图形路径 例如 我将两个相交的矩形添加到 GraphicsPath 中 我只想绘制所得图形路径的轮廓 请注意 我不想填充该区域 我只想绘制轮廓 Example 没有有效的方法来绘制大纲 然而 GDI 确实有一个名为 G