问题标签 [drawtobitmap]
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.
c# - control.DrawToBitmap() 没有按预期工作
在 Winform 应用程序中,我有一个用户控件;在其上绘制矩形、圆形等形状。我正在尝试使用 DrawToBitmap() 方法拍摄相同的快照。我有一个固定大小(300 x 300)的位图,用户控件的大小是(600 x 800),所以拍摄的快照只包含用户控件的一部分。
如何在位图中获取整个用户控件的快照?提前致谢。
c# - 截取未在屏幕上完全显示的“缩放”图像
在我的 winform 应用程序中,我试图截取图像,并使用 DarwToBitmap() 方法将其分配给图片框。它对我来说很好,但是当我缩放图像然后进行屏幕截图时,在图片框中只显示了屏幕上可见的图像的一部分。我如何捕获整个图像的屏幕截图,即使它是缩放的。??
这与我正在尝试做的非常相似。
datagridview - DataGridView - 获取实际的列宽
我正在开发一个 ASP.NET 网站,其中有一些数据表。我想生成这些数据的图像,以便我可以在论坛上显示这些图像(例如)。我过去使用的方法很简单:我在内存中创建一个 System.Windows.Forms.DataGridView 控件(是的,winforms 控件!),设置样式,加载一些列和行,然后使用它的 DrawToBitmap 方法生成图像(基本上是控件的“屏幕截图”)。
例子:
这非常有效,但是我无法计算我应该生成的图像的大小,以及 DataGridView 控件本身的大小。默认情况下,它是 100x100(我认为),因此会删除大部分数据,这对于图像生成毫无用处,因为您显然无法滚动图像......
所以我想计算 DataGridView 应该的宽度和高度,以便它可以在没有滚动条的情况下显示所有数据。
我认为这很简单:遍历列并添加它们的 Width 属性以获得总宽度,然后遍历行并添加它们的 Height 属性以获得总高度:
不过,这就是问题所在……每列的 Width 属性始终返回 100,我假设这是列的(默认)MinimumWidth,而不是列的实际宽度。因此,对于三列,我的网格始终为 300 像素宽,即使这些列实际上每列都比 100 像素宽得多。
我猜这是由于我在内存中创建网格而不是实际将其绘制到某个表格这一事实引起的?我相信这应该可行,但出于某种原因,无论我做什么,列宽总是 100 ......这使我的整个想法毫无用处,因为我无法计算网格和图像的必要宽度。我想我可以测量每列中的所有数据字符串并基本上手动调整它们的大小,但我真的不想......一定有更好的方法吗?
我究竟做错了什么?谢谢!
.net - 当父窗体有边框时,在自定义控件中使用 DrawToBitmap 不起作用 vb.net
好的,所以...我正在尝试创建一个自定义复选框,该复选框实际上根据字体大小调整字形的大小(请转到 MS,因为它永远不会实现此功能)。为了正确执行此操作,我必须完全覆盖控件中的 OnPaint 事件。但是,当控件设置为透明时,我遇到了问题。
当父控件(我现在只做一层透明度)没有边框(特别是设置为 FormBorderStyle = None 的窗口窗体时,它工作得很好。但是,如果我将它设置为除此之外的任何东西,坐标关闭并抓住我的位图的错误部分。我在代码下方发布了屏幕截图的链接以演示差异。我无法弄清楚为什么它不能正确定位边框。我认为它与客户端尺寸有关,但可以'不正确。此外,使用'drawtobitmap'函数,OnPaint 会大量递归自身,并减慢绘制控件的速度,有没有办法阻止它?
这是相关代码
c# - panel1.DrawToBitmap 不从 DrawLine 画线
我有一个面板,我在上面画线:
这一切都很好。我显然改变了点来画更多的线,但这对于这个问题并不重要。我想将该面板导出为 jpg 文件。我正在使用这段代码:
这会输出一个空白的 jpg。我的面板的背景是灰色的,而jpg的背景也是灰色的,所以我知道它实际上是在导出面板。另外,我在面板中添加了一个按钮,只是为了查看它是否会被保存,并且确实如此。所以由于某种原因,jpg没有保存正在绘制的线条。
vb.net - DrawtoBitmap 不显示面板的内容
我在这里的第一篇文章,所以这里是,
我有一个程序,我需要获取面板中像素的颜色,该面板包含一个 IE 浏览器,如下面的代码所示(我不能使用 webBrowser,因为它不会加载与 IE/Firefox 相同的某些网页(通常是java))
这个位工作正常,但是用户可以更改整个表单的不透明度,以便获得像素颜色,我发现如果我在表单上使用 DrawtoBitmap 它会忽略不透明度,所以我可以使用它来获取像素颜色,但是 drawtobitmap 是将面板的内容留空(我使用图片框来测试图像)
表单及其所有按钮等在图片框上显示良好,但面板为空白(我都试图将面板转换为位图,但结果完全空白)。我是否将 IE 错误地链接到面板,或者只是 DrawtoPanel 无法正常工作?(我尝试使用 Printscreen,但正如预期的那样,它包括不透明度)。继承人我的 Sendmessage 和 Setparent 只是为了完整性。
任何帮助将不胜感激,谢谢瑞恩
c# - C# WebBrowser DrawToBitmap 在 DOM 更改时返回白色图片
我一直在尝试为自动化目的捕获网页,但是我遇到了 DrawToBitmap() 返回白色图片的问题。在我看来,当 DOM 已更改或浏览器导航时,它会返回白色。
例如,我以编程方式填写登录表单,然后提交表单,似乎一旦我给 AJAX 请求足够的时间来完成并且浏览器被重定向,它总是会产生一个白色的图像。
我通过处理和重新创建我的 WebBrowser 实例,然后直接导航到登录后页面来解决这个问题。如果我在 ReadyState 为“完成”时拍摄屏幕截图,这可以正常工作。但是,如果我给它足够的时间来加载图表的数据和它需要的其他数据,那么我会得到一张白色的图像。
我也进行了测试,可以确认不是程序中的延迟导致了白色图像。
任何帮助将不胜感激!
谢谢!
visual-c++ - 将表单客户区保存到没有装饰的图像文件(标题栏、边框)
我想将表单的客户区保存到没有装饰(标题栏和边框)的图像文件中。我玩过一些 ClientRectangle 和 Bounds 属性,但没有成功。保存的图像文件始终具有标题栏和边框,并且缺少右下部分。我究竟做错了什么?
还有一个问题:首先我认为 DrawToBitmap 方法会创建一个 BMP 图像,但是当我用图片编辑器打开保存的图像时,它说它是一个 PNG 文件。然后是 BMP/PNG?
我的代码如下所示:
非常感谢您提前提供的任何帮助!
vb.net - 使用具有重叠控件和形状的 DrawtoBitmap
我正在尝试从我的一个表单中重复截图(即加载具有特定数据的表单,获取并保存截图,然后加载具有不同数据的表单,获取另一个截图,等等)。
该表单包含重叠的 Shape 和 Control 元素。当我在屏幕上看到表格时,我得到了正确的 z 顺序,但在屏幕截图中,z 顺序是相反的。
我已经在网站上找到了一些线程来解释在使用我当前使用的 DrawToBitmap 方法时反转的 z 顺序。我还发现了 Controls 和 Shapes 的 BringToFront() 和 SendToBack 方法,并尝试使用它们来调整 z 顺序以获得正确的屏幕截图。仍然没有成功。
然后我阅读了有关这些方法的 Shape 类的文档,发现了以下注释:
BringToFront方法可用于将 LineShape、OvalShape 或 RectangleShape 控件放置在给定容器中所有其他线条和形状控件的前面。它不会将控件定位在容器中其他类型控件的前面;使用线条和形状控件绘制的图形总是出现在其他控件的后面。
是否有机会改变这种行为,并使用 DrawToBitmap 正确截取我的表单?有其他解决方案的想法吗?我也尝试过 Graphics 类的 CopyFromScreen 方法,但我希望整个屏幕截图保存过程能够正常工作,而不显示我要保存的表单。
asp.net - 在 asp.net 中将面板另存为图像
我在 asp.net 中有一个面板,其中包含许多图像。我的问题是如何将面板中的所有图像保存为 1 张图像。
是否可以在 asp.net 中使用 drawToBitmap?