草庐IT

windows - 如何为不同的语言自动选择最合适的字体?

我需要为不同的语言找到最合适的字体。因此,我可以在不使用GDI文本输出API(例如TextOut)的情况下绘制不同语言的文本。实际上,APITextOut可以做到这一点。HFONThFont=NULL;LOGFONTlg={0};lg.lfHeight=14;lg.lfWeight=FW_NORMAL;wcscpy_s(lg.lfFaceName,LF_FACESIZE,L"Arial");hFont=CreateFontIndirect(&lg);SelectObject(hdc,hFont);TextOut(hdc,0,50,L"abc我爱",5);因为Arial字体不支持中文,所

c++ - Windows下4K截屏直接存入缓冲区

我知道网络上有很多帖子使用GDI或DirectX方法在Windows中进行屏幕捕获。但是,我发现的所有内容都将捕获的图像保存到位图中,而我想将其保存到缓冲区中。这是我以GDi方式执行此操作的代码:HWNDhwind=GetDesktopWindow();HDChdc=GetDC(hwind);uint32_tresx=GetSystemMetrics(SM_CXSCREEN);uint32_tresy=GetSystemMetrics(SM_CYSCREEN);uint32_tBitsPerPixel=GetDeviceCaps(hdc,BITSPIXEL);HDChdc2=Creat

c++ - 真的需要 DPI 意识吗?

我正在学习如何使用GDI/GDI+绘制GUI,我发现了这个http://msdn.microsoft.com/en-us/library/windows/desktop/dd756596(v=vs.85).aspx#step_2__declare_that_the_application_is_dpi-aware是否每个应用程序都进行该计算以便正确显示或什么?有人可以解释如何计算按钮、图像和窗口上所有控件的客户端坐标,以便它们在不同分辨率下具有相同的对齐方式吗?提前致谢。 最佳答案 使用GDI,您可以使用GetDeviceCaps函

c# - Bitmap.LockBits 给出错误的值?

我在将一些代码从Bitmap.GetPixel更改为使用LockBits返回的直接像素缓冲区时遇到问题。与GetPixel相比,LockBits返回的数据似乎确实给了我不同的颜色值。这很不幸,因为此更改确实会产生不同的颜色,这会破坏自动化单元测试。我有一个29*30像素的png文件,我确实将Format32bppArgb加载到位图中。这真的是LockBits和GetPixel返回的数据不同吗?我该如何解决这个问题?这里是一些用加载的位图重现它的代码publicunsafestaticBitmapConvert(BitmaporiginalBitmap){Bitmapconverted=

c# - 如何在 C# 中打印 itf 条形码

我需要使用GDI+打印和交错5个条形码中的2个(18位无校验和)。我已经使用在网上找到的一些代码为代码128条形码完成了此操作。不幸的是,条码扫描器无法读取代码128,所以我不得不求助于ITF条码。谢谢,肯 最佳答案 classI2of5{privatestaticstring[]patterns={"NNWWN",//0"WNNNW",//1"NWNNW",//2"WWNNN",//3"NNWNW",//4"WNWNN",//5"NWWNN",//6"NNNWW",//7"WNNWN",//8"NWNWN"//9};publicI

windows - 为什么垂直方向的字体大小不同

我创建了两个标尺-一个垂直的和一个水平的:现在在垂直标尺中,文本的“大小”在视觉上更大(大约长5-6像素)。为什么?相关代码:WM_CREATE:LOGFONTLf={0};Lf.lfHeight=12;lstrcpyW(Lf.lfFaceName,L"Arial");if(!g_pGRI->bHorizontal){Lf.lfEscapement=900;//hfRuler=CreateFontIndirectW(&Lf);SelectFont(g_pGRI->hdRuler,g_pGRI->hfRuler);WM_PAINT:SetTextColor(g_pGRI->hdRuler

c++ - 沉浸式全屏模式之上的透明窗口

我正在尝试在处于沉浸式全屏模式下的另一个进程之上进行绘制。我知道这可以使用GDI,我有2个问题:是否可以使用顶层透明窗口?(在沉浸式过程之上)是否可以使用更高级别的API来代替GDI?谢谢你:) 最佳答案 在Windows中,您有两种创建全屏窗口的可能性:一个全屏应用程序,拥有显示的独占绘图权。可扩展至完整桌面分辨率的无边框窗口。第一个选项允许您更改显示属性,如分辨率、位深度和刷新率,而第二个选项必须使用与普通(窗口)桌面应用程序相同的选项。如果全屏应用程序是使用选项2实现的,则只有可以用顶层窗口覆盖全屏窗口。但是,在这种情况下,任

c++ - Windows 10 屏幕坐标偏移 7

我在Windows10上使用C++进行编码-直接使用win32API。我想让一个窗口显示在屏幕的右上角。当我这样做时,我注意到最大化窗口的屏幕坐标为left=-8,top=-8,right=1936,bottom=1088。此外,当我将窗口定位为right=1920和top=0时,右侧大约有8像素的间隙。我尝试四处移动窗口以查看我得到的屏幕坐标。非最大化窗口的rect.left可以从-7到1912。所以东西滑动了7个像素?WTF微软??我应该如何提出rec.right=1913值来将我的窗口定位到屏幕右侧,而没有那个该死的间隙?但是1920年的rect.right留下了一个空白。所以1

c++ - StretchBlt 收缩损坏

我正在使用Windows(7和XP-均为32位)并使用C++进行编码我正在从外部源接收位图。这些位图具有固定分辨率(384x288)收到位图后,我需要根据可变大小的布局调整它的大小,因此我目前正在使用StretchBlt来执行这些任务。如果我将位图的大小调整为更大的屏幕图像,效果很好。但是,如果我将传入的位图缩小到较小的版本以放置在屏幕上,我会在图像上出现一些奇怪的“拳击”类型的效果。在以下示例中,三个面板中的每一个的源图像都是相同的。但是左手两个(调整得更小)都对它们产生了拳击/线条效果。对于实际的StretchBlt调用,我这样做:memcpy(at_TempPointer[Por

c - 获取 win32 DrawText() 的默认字体高度

如何获取DrawText()使用的字体的默认字体高度?如果可能的话,我宁愿不设置新字体。 最佳答案 您可以使用GetTextExtentPoint32. 关于c-获取win32DrawText()的默认字体高度,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/4992121/