C# WinForms:使用一个或多个附加线程进行绘图。如何?

2024-05-16

如果我有一张包含各种几何形式(直线、矩形、圆形等)的大图,线程需要花费大量时间来绘制所有内容。但在现实生活中,一栋建筑是由不止一名工人建造的。因此,如果绘图是建筑物而线程是构建者,则绘制速度会快得多。但我想知道怎么做。

你能告诉我怎么做吗?有可能吗(尽管我已经问过并且答案是“是”)?是否值得使用?有哪些风险?

如果有我遗漏的问题,请告诉我并回答。

Thanks!


假设您正在使用 GDI+ 并且System.Drawing.Graphics对象将图形(矩形、圆形等)渲染到背景绘图表面(例如System.Drawing.Bitmap对象):实例成员System.Drawing.Graphics您需要使用的对象是不是线程安全的. 请参阅此处的 MSDN 文档 http://msdn.microsoft.com/en-us/library/system.drawing.graphics%28v=VS.100%29.aspx

鉴于此,我不会使用多个“构建器”线程来渲染图形。

相反,我的建议是将所有绘图都绘制到System.Drawing.Bitmap对象在一个single如果可能的话,后台线程而不是多个后台线程。您可以使用状态栏或其他指示器让用户知道您的程序正在后台运行。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# WinForms:使用一个或多个附加线程进行绘图。如何? 的相关文章

随机推荐

  • 如果使用 jQuery 隐藏了 ASP:Button,我无法单击该按钮?

    我发现 StackOverFlow 答案和其他资源说您可以通过 jQuery 单击隐藏的 ASP Button click or trigger click 然而 这些都不适合我 除非按钮是 Visible true 这是按钮
  • Android 特定例外列表有哪些?

    我知道 Android 框架会抛出一些异常 喜欢ActivityNotFoundException WindowManager BadTokenException 但我不知道 Android 框架特有的所有其他异常 任何人都可以列出可能的
  • 我可以使用动态映射来解压 Python 中的关键字参数吗?

    长话短说 我想使用任意命名的参数调用 format 这将执行查找 Thing1 and other thing format my mapping 我尝试像这样实现 my mapping class Mapping object def g
  • 如何确保与 sqlite 和 NFS 的文件安全同步

    我最近将应用程序的工作区文件格式转换为 sqlite 为了确保 NFS 上的稳健操作 我使用了通用更新策略 对本地硬盘上临时位置中存储的副本进行了所有修改 仅在保存时 我才会通过使用临时文件复制原始文件来修改原始文件 可能在 NFS 上 我
  • StaticInjectorError[e -> e]: NullInjectorError: 没有 e 的提供程序

    在我的 app module ts 中 NgModule declarations AppComponent imports BrowserModule MaterialModule FlexLayoutModule BrowserAnim
  • 需要帮助绘制多元线之间的区域 - 而不是从轴到线

    我是 d3 js 的新手 我正在努力填充多元百分位数图中线条之间的区域 我不希望在最底线下方或最顶线上方填充任何区域 第一列始终位于图表的底部 第 5 个百分位 最后一列将始终位于图表的顶部 第 95 个百分位 我需要每条线之间单独的区域段
  • 使用 imblearn 管道进行交叉验证之前或之后是否发生过采样?

    在对训练数据进行交叉验证以验证我的超参数之前 我已将数据分为训练 测试 我有一个不平衡的数据集 并且想要在每次迭代中执行 SMOTE 过采样 因此我使用以下方法建立了一个管道imblearn 我的理解是 将数据分成k折后应该进行过采样 以防
  • Docker EXPOSE 使用运行时环境变量

    我的 Dockerfile 设置了一些环境变量的默认值 然后公开了两个应该是提供的环境变量的端口 FROM python 3 6 5 stretch ENV MY SERVICE PORT 8080 ENV MY SERVICE PORT
  • 引用 url() 的值真的有必要吗?

    我应该在样式表中使用以下哪一项 Example 1 background image url image png Example 2 background image url image png Example 3 background i
  • UISlider不会自动重绘

    我的应用程序上有一个 UISlider 有时我不仅需要更新它的值 还需要更新它的minimumValue 值已更改 但如果我调用 setValue 方法或为滑块分配新值 它会具有新值 但滑块不会将自身重新绘制到该新值应有的位置 我怎样才能重
  • 将productFlavor添加到实验性Android gradle插件库

    我有一个使用实验性 gradle 插件的项目 即0 2 0 当我没有了productFlavor 我可以在Android Studio中完美集成一个库模块 一切都运行良好 但是当图书馆有一个productFlavor 我的主项目没有找到库类
  • 获得新的 access_token 后,如何更新我的 cookie?

    使用刷新令牌获取新的访问令牌后 我想使用该访问令牌更新我的客户端 cookie 我的客户端能够使用 ajax 登录并调用我的 REST API 但是当第一次授权过期时 API 调用自然不再起作用 我有一个 NET Web 应用程序 它使用自
  • 在Linux上编译C# + WPF以便在Windows上运行

    我有一个 C 应用程序 其中某些部分是使用 WPF 编写的 Mono 不支持 可以在 Linux 上编译这个应用程序吗 最终 该应用程序将在 Windows 上运行 但它是更大框架的一部分 并且我们的整个构建过程在 Linux 上运行 因此
  • 从捆绑包中检索 android.intent.extra.EMAIL 值

    我创建了一个应用程序 例如电子邮件客户端应用程序 例如Gmail 当用户单击其他应用程序中的电子邮件地址并从列表中显示的电子邮件发送应用程序中选择我的应用程序时 电子邮件内容 例如电子邮件地址 电子邮件主题等 有意进入我的应用程序 但问题是
  • PHP:STR 替换为链接

    我有这个 PHP 聊天框 如果我在聊天框中键入链接 它不会将其显示为链接 我如何使用 STR 替换来执行此操作 它应该响应诸如 http http com nl www www 之类的内容 我的其他 STR 替换行如下所示 bericht
  • 对于 AWS Kinesis 的 KCL Java 库,如何使用 requestShutdown 和 shutdown 正常关闭

    我正在尝试使用 Java 中 KCL 库的新功能来实现 AWS Kinesis 的正常关闭 方法是注册关闭钩子以停止所有记录处理器 然后正常停止工作进程 新库提供了记录处理器需要实现的新接口 但它是如何被调用的呢 尝试先调用worker r
  • 在 JavaScript 中对字符串使用除法运算符 (/)

    我意识到在javascript中所有101 100 101 100 101 100 和 101 100 结果都是1 01 在Chrome FF和IE11上检查 但我找不到有关此行为的文档 因此我的问题是使用此功能是否 跨浏览器 安全 以及这
  • Matlab 图像数据的 hist 函数

    我是 Matlab 新手 我想制作自己的函数 与 imhist 显示图像数据的直方图 完成相同的工作 但我对此完全是新手 我不知道如何做开发这样的功能 我开始做一些东西 但它非常不完整 function output args myhist
  • SQL Server中的列级与表级约束?

    A 列级 GO CREATE TABLE Products ProductID INT CONSTRAINT pk products pid PRIMARY KEY ProductName VARCHAR 25 GO b 表层 CREATE
  • C# WinForms:使用一个或多个附加线程进行绘图。如何?

    如果我有一张包含各种几何形式 直线 矩形 圆形等 的大图 线程需要花费大量时间来绘制所有内容 但在现实生活中 一栋建筑是由不止一名工人建造的 因此 如果绘图是建筑物而线程是构建者 则绘制速度会快得多 但我想知道怎么做 你能告诉我怎么做吗 有