gdi相关内容
我正在尝试获取Windows 10计算机上每个屏幕的屏幕截图. 我的系统有2个监视器,这些监视器具有多个DPI. 我的主显示器的“比例和布局"设置为200%. 我的中学 将“比例和布局"设置为100%. 我正在尝试使用C#拍摄每个监视器的屏幕截图. 但是我的缩放监视器报告了错误的坐标: 一切都减半. 结果,主监视器的屏幕截图仅为屏幕区域的1/4(宽度/2,高度/2). 这是我的代码
..
是否可以使用BitBlt直接复制出GDI +位图而不使用GetHBitmap? GetHBitmap较慢,因为除了BitBlt副本之外,它还制作了整个映像的新副本,并且速度比BitBlt副本慢,并且必须处理给定的HBITMAP.图片很大. 是否有一种方法可以指向BitBlt以使用原始GDI +图像的像素数据? 编辑:我可以找到GDI +位图像素数据在内存中的位置的指针.我可以创建
..
在同时使用GDI和GDI +进行绘图时,我遇到了问题.页面转换-尤其是缩放-似乎在两者之间有些偏离.除了SetViewportExt和SetWindowExt之外,GDI上下文的哪些属性会影响输出的缩放? 该代码几乎完全将GDI用于其绘图,但在少数需要其功能(半透明)的情况下使用GDI +.它使用SetViewportExt,SetWindowExt和SetViewportOrg启用缩放和滚
..
System.Windows.Forms.TextRenderer.DrawText方法根据flags参数的值呈现带或不带左右填充的格式化文本: TextFormatFlags.NoPadding-将文本紧紧地放在边界框内, TextFormatFlags.GlyphOverhangPadding-添加一些左右边距, TextFormatFlags.LeftAndRightPadding
..
有人知道关于GDI +性能的可靠(而且希望是广泛的)书籍/网站吗? 例如,我最近遇到了这项出色的实验.我最近还注意到,Graphics.FillPath()是方法,比Graphics.DrawPath()快得多.我很想知道我还缺少其他哪些重要信息. 商誉, 大卫 解决方案 嗯.如果您需要绘制路径的轮廓,那么知道FillPath比DrawPath快是没有好处的! 优化GDI
..
我正在尝试对字符串进行命中测试(我想从x偏移量获取char索引),但是我遇到了度量字符串的问题. 这实际上是我正在使用的代码 StringFormat sf = new StringFormat(StringFormatFlags.MeasureTrailingSpaces | StringFormatFlags.NoWrap | StringFormatFlags.Line
..
我想找到所有与我的窗口完全或部分重叠的窗口(位于其顶部). 作为一种特殊情况,如果我有两个窗口句柄(hWnd1和hWnd2),我想确定hWnd2是否部分或完全重叠于hWnd1. 有问题的窗口是桌面窗口(不是同一过程中的子级/兄弟级). 解决方案 使用GW_HWNDPREV重复调用GetWindow()来迭代可能与您重叠的窗口.使用GetWindowRect()检查这样的窗口是否实际上与您的
..
是否有Win32 API调用来确定在特定坐标和/或鼠标下可见的窗口和/或控件? 解决方案 您可以使用 GetClassName 函数查看它是哪个控件. 这是一个示例: http://support.microsoft.com/kb/112649
..
我正在使用GetDIBits将位图数据从与屏幕兼容的设备上下文中转换为某种格式的DIB.我给人的印象是,当源位图为每像素8位或更少时,DC仅对于合成颜色表是必需的.由于我的源位图是完整的32位彩色图像,并且这是一个一次性程序,并且我没有方便的屏幕DC,因此我将HDC参数设置为NULL.这没用.我抓住屏幕DC并将其传递进去后,它确实开始工作. 这让我想知道为什么GetDIBits需要设备上下文
..
我可以计算水平和垂直点,但无法弄清楚如何使用对角线点计算距离.有人可以帮我吗? 这是我的水平和垂直测量的代码: private float ComputeDistance(float point1, float point2) { float sol1 = point1 - point2; float sol2 = (float)Math.Abs(Ma
..
我有一个ProgressBar控件,类似于以下两个: 第一个已正确绘制.如您所见,第二个只有一个0,应该有两个,但是另一个看不见,因为ProgressBar的ForeColor与TextColor相同.有什么方法可以将下面的ProgressBar用石灰涂成黑色,将背景涂成黑色? 解决方案 您可以先绘制背景和文本,然后使用 using System; using System.Draw
..
例如,我正在寻找用C#绘制非客户区域的方法,而不是矩形作为表单,我想要一个椭圆形(这是一个例子),但是我该怎么做呢? 我基本上想绘制我所有的非客户区域,并且我想这样做必须重写一些方法,但是哪些方法呢? 我找到了一个使用'xaml'的示例,我认为这是Windows Presentation Foundation应用程序,但是我不太了解. 解决方案 m0sa提供了对于WinForm
..
我有一个 *.ico 文件,其中包含多个大小不同的图标,这些图标链接到我的可执行文件作为资源.我使用此资源将应用程序的图标设置为RegisterClassEx(),即: wcx.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON1)); 除此之外,我还想将此资源中的所有单个图标转换为ARGB像素阵列.通过在GetIconInfo()返
..
首先,对不起,如果我在这里听起来很自大/粗鲁. 好的,所以现在每个人都已经碰到了这一点(我希望);我只是在任何地方都没有找到任何适当的答案.我们从Common Controls 6清单开始,然后 case WM_CTLCOLORSTATIC: if (/* window has WS_EX_TRANSPARENT */) { SetBkMode((HDC) wP
..
我需要使用给定的脚本名称来获取字体(System.drawing.Font).例如,如果我输入为"CourierNewPSMT",则应该加载Courier字体. 类似地,如果输入"Arial-Black",则应加载"Arial Black"字体. 任何想法? 注意:"Arial-Black"是"Arial Black"字体的后记名称. "CourierNewPSMT"是"Cour
..
我最近在一个过去运行良好的程序中遇到问题.我将其跟踪到以下代码: using System.Drawing; using System.Runtime.InteropServices; namespace Foo { static class CProgram { [DllImport("kernel32.dll", CallingConvention =
..
好,我正在处理一个问题,试图在文本框中嵌入LCD型真型字体.对于某些背景,如果将字体安装到系统上,然后将其作为文本框的字体类型加载,则可以显示液晶字体.但是,它不能用作应用程序中的嵌入式字体.我正在Windows 7盒子上的Microsoft Visual Studio 2010中使用Visual Basic中的Windows窗体应用程序. 在将字体存储为资源文件并将属性设置为嵌入资源之后,
..
在WPF中,我们希望使用ttf字体作为嵌入式资源,而无需将其复制或安装到系统中,也无需实际将其写入磁盘.没有内存泄漏问题. 以下解决方案均未详述: 如何在WPF中包括外部字体无需安装的应用程序 在这种情况下 可用,因为WPF内存泄漏在此附近: 使用Font时WPF TextBlock内存泄漏 只能通过var font = new FontFamily("Roboto")
..
我使用ffmpeg使用以下代码记录窗口: ffmpeg.exe -f dshow -y -i video="screen-capture-recorder":audio="virtual-audio-capturer":audio="Microphone (USB Audio Device)" -framerate 15 -vcodec libx264 -crf 0 -prese
..
在Windows中捕获屏幕截图的最快方法是什么?一个司机?使用DirectX吗? 解决方案 最快的方法是读取显卡内存的映射区域,我想...只是一个想法,从未尝试过。
..