问题标签 [tcanvas]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
743 浏览

delphi - Delphi TCanvas 对象从 dll 使用后损坏,如何恢复?

有问题。我有一个带有画布的表单,我需要通过它的句柄从 dll 访问这个画布。我这样做是这样的:

来自 dll

它工作得很好,我从 dll 中画出我需要的东西。但是这个技巧有副作用。从 dll 绘制后,表单会丢失字体设置(顺便说一句,从 dll 绘制时我没有使用字体,只有几个矩形),当我从主表单在同一画布上绘制时,即使我直接使用 canvas.font.size := .. .; canvas.font.name := ...; 在 canvas.TextOut 之前,字体不会改变。线条,填充和其他绘画都可以。但是字体会损坏(有时不会,但大多数情况下)。

有没有办法重置/重新初始化表单的 TCanvas 对象?

0 投票
1 回答
2845 浏览

delphi - 在 FMX TCanvas 中设置字体颜色

不确定我是否在这里遗漏了一些东西,但你能在 Firemonkey TCanvas 中设置字体颜色吗?

我在以下属性中看不到任何建议:

任何帮助都会很棒

谢谢,

0 投票
1 回答
2736 浏览

c++ - 为什么 TCanvas 在根 shell 中执行宏期间不绘制?

假设我有一个包含两个TGraph的宏:T1T2,并且我有一个画布“ C ”分为两部分:

当这部分被执行时,我的屏幕上出现了 blanc 画布,但它变灰了.. 不活动!但没关系,然后它继续..

该程序有两个不同的部分,在第一部分它完成计算进入画布的前半部分并绘制第一个TGraph

在这一点上,我希望已经在画布的前半部分看到了图表,但不幸的是什么都没有出现,画布仍然处于非活动状态!程序进入下一部分:

同样的故事还没有出现在画布上,但随后执行完成,我回到了根外壳,如下所示:

现在我可以看到这两张图了!我想要的是已经执行的部分T1->Draw("AP")应该已经出现在上cd(1),然后应该出现在上的图表cd(2)。有没有办法做到这一点?

0 投票
2 回答
610 浏览

delphi - 在 TBitmap 周围绘制点的边界?

我写了一个例程,它应该为位图添加一个虚线边框:

但是当放大结果时,生成的边界线而不是点似乎是由小破折号组成的:

在此处输入图像描述

这个对吗?如果没有,我怎样才能得到真正的点而不是破折号?

0 投票
1 回答
99 浏览

delphi - TBitmap 在不相关的图形代码之后丢失了 Clipping 区域

请考虑以下代码:


DrawBorder中,如果我只设置 Form1 的 Tag 而没有设置 Caption,那么 FBitmap 的剪切区域在整个绘图代码中都会被保留和尊重。FBitmap 将如下所示:

在此处输入图像描述

但是如果设置了 Form1 的标题,那么 FBitmap 将失去它的剪切区域,看起来像这样:

在此处输入图像描述

所以似乎在 Form1 的 Caption 设置后,FBitmap 失去了它的剪辑区域。发生这种情况时,WindowOrigins(通过 SetWindowOrgEx 设置)也会丢失。

0 投票
1 回答
98 浏览

delphi - 需要一种方法来计算 tcanvas 中实际绘图项的范围

我正在使用paintbox组件使用矩形、多边形和其他画布方法绘制各种形状。用户创建绘图后,我想保存位图以在列表框中使用。问题是绘图可能只使用画布的一小部分,并且列表框中的结果图像会非常小,除非我通过仅选择油漆框原始画布的已使用部分来调整其大小。所以问题是我如何确定画布的哪一部分已被使用,以便我只能提取画布的那部分以加载到位图中以在列表框中显示?

(注意:我在上面进行了编辑以澄清问题)

实际程序有一个画框 (200x200) 和一个图像 (32 x 32)。图像使用Bitmap1.Canvas.CopyRect(Dest, PaintBox1.Canvas, Source);. 如果在 200x200 的paintbox.canvas 中,paintbox 中的绘图只有 20x20,那么在 Image.canvas 中生成的位图在 32x32 的 image.canvas 中将非常小。我需要放大它,这意味着我必须确定颜料盒中使用区域的实际大小并更改“CopyRec”中的源大小。

0 投票
2 回答
3813 浏览

delphi - 如何保留 TControlCanvas 的所有属性并在以后恢复它们?

我正在尝试为TDBGridEh. 问题是当我更改钢笔、画笔的属性时……绘画变得凌乱。那是因为控件在调用事件处理程序后自己做了一些额外的绘制。所以我必须保留所有道具,然后在我自己的画完成时重新设置它们。

我尝试创建自己的TControlCanvas网格并将其分配给它,但我得到一个运行时异常消息:

无法将 TControlCanvas 分配给 TControlCanvas

,这表明该AssignTo方法既不是为其祖先实现的,TControlCanvas也不是为其祖先实现的。所以我的问题是:

  1. 为什么TControlCanvas没有AssignTo方法?问题是什么?

  2. 如何保留和恢复 TControlCanvas 的所有属性?我的意思是比创建TPen, TBrush,TFont等更方便的东西。

0 投票
1 回答
63 浏览

c++ - 锁定后我应该解锁 TBitmap 画布吗?

我想绘制一个本地TBitmap并返回它。因为我在主线程之外,所以我必须在使用前锁定画布。(TBitmap 是如何线程安全的

我是否必须解锁画布,或者TBitmap析构函数会为我做这件事?在位图上绘制后在此功能中解锁画布是否安全,并在我想读取位图时再次锁定它,或者如果我这样做可以清除画布吗?

0 投票
1 回答
117 浏览

javascript - 如何将 TCanvas->Arc 值转换为 SVG Arc

我为我的公司编写了一个从 Metafile 到 SVG 的转换器(TCanvas->arc)。我已经完成了矩形或其他一些元素的转换,但我不明白如何转换弧线。我用 JavaScript 编写代码。:)

我有一个文件,我在缓冲区中读取它并获取值,但这对你来说并不有趣。

所以我们目前有我能得到的所有值:Point1,Point2,Start,End

给出了这 4 点,我现在应该画一条弧线

他们目前正在使用此命令绘制弧线。你可以不注意这里的偏移量。

如何从给定点获取所有信息以在 SVG 中绘制 Arc。

例如实际值:

或者

我如何获得:大弧标志、扫描标志和旋转以及我必须使用什么值或计算它是否正确绘制。

我试着画出来,看了很多文档,试着用书面形式来创作。

0 投票
1 回答
226 浏览

c++ - 我需要总结一个目录中的数千个直方图

我有一个Processed_Data包含数千个hists*****_blinded.root文件的目录。每个都hists*****_blinded.root包含大约 15 个图表和直方图。我的目标只是sc*****从每个文件中重叠 1 个特定的直方图,以获得最终的直方图,该直方图finalhists_blinded.root将代表所有重叠在一起的直方图。

我尝试了以下宏:

但我最后得到了空白画布。这个想法是hists通过代码运行每个文件并逐个添加。

因此,我希望看到所有这些直方图重叠,以便它们中的每个尖峰都会在文件sc*****中创建一个模式。finalhists_blinded.root