标签: gdi

用于 MaskBlt 的光栅运算符

我正在尝试使用 GDI MaskBlt 命令绘制具有透明度的图像:http://msdn.microsoft.com/en-us/library/dd145047 (VS.85).aspx

我似乎在文档中找不到任何关于在明显的用例中使用什么光栅运算符的任何内容:一种MAKEROP4(SRCCOPY, DSTCOPY)- 掩码为 1 的位块传输,并在掩码为 0 的情况下保持目标不变。 SRCCOPY 是有效的 ROP ,但是我应该用什么来代替我的虚构DSTCOPY呢?

winapi gdi mask bitmap

0
推荐指数
1
解决办法
2175
查看次数

如何使用CreateFontA设置字体大小?

我不习惯CreateFontA,但我正在为一个使用这个功能的游戏做一个模组,我也必须使用它。

我设法更改字体,但更改字体大小时遇到​​一些麻烦。

我想使用11px的字体,我该如何实现呢?我尝试将宽度和高度设置为 11,但出现了严重错误。

c++ winapi gdi

0
推荐指数
1
解决办法
2546
查看次数

错误 C2248:“CObject::CObject”:当我在 MFC 中调用 hDC.SelectObject 函数时,无法访问类“CObject”中声明的私有成员

我在 MFC (Visual Studio 2013) 中为 WinCE 2013 开发了一个简单的程序,使用 GDI 方法在设备上下文上绘图。不幸的是,当我尝试在上下文设备句柄上调用 SelectObject 时,我收到错误:“错误 C2248:‘CObject::CObject’:无法访问在类‘CObject’中声明的私有成员”

我附加了一个调用 SelectObject 方法的函数。

    BOOL Druk::DrawGrid(CDC hDC,int start_x, int start_y, int limit_x, int limit_y, int width)
{
    CPen pen;
    COLORREF linecol;
    pen.CreatePen(PS_SOLID, width, NULL);
    hDC.SelectObject(&pen);
    for (float i = start_y; i < limit_y; i += 5 * MILIMETER)
    {
        hDC.MoveTo(start_x, i);
        hDC.LineTo(limit_x, i);
    }
    for (float j = start_x; j < limit_x; j += 5 * MILIMETER)
    {
        hDC.MoveTo(j, start_y);
        hDC.LineTo(j, limit_y);

    }
    for (float i = …
Run Code Online (Sandbox Code Playgroud)

c++ mfc gdi windows-ce

0
推荐指数
1
解决办法
62
查看次数

如何加快打印 Unicode 的速度?

我正在使用 windows.h "TextOutW" 函数将文本打印到位图。打印普通的 ascii 确实很快,但是在 unicode 范围内打印似乎会导致巨大的减速。这是我打印 unicode 方块并测试持续时间的代码:

wchar_t b = 0x25A0;
LPCWSTR s = &b;
TextOutW(hMyDC, x, y, s, wcslen(s));
Run Code Online (Sandbox Code Playgroud)

有没有办法加快这个速度?

编辑:我用计时器运行我的循环来测试速度:

    using std::chrono::high_resolution_clock;
    using std::chrono::duration_cast;
    using std::chrono::duration;
    using std::chrono::milliseconds;



auto t1 = high_resolution_clock::now();

for(int i = 0; i<1000; i++){
    TextOutW(hMyDC, 25, 25, s, 1);
}
  
auto t2 = high_resolution_clock::now();

  //  auto ms_int = duration_cast<milliseconds>(t2 - t1);
duration<double, std::milli> ms_double = t2 - t1;
    cout << ms_double.count() << "ms\n";
Run Code Online (Sandbox Code Playgroud)

打印 'H' a 1000 次大约需要 5ms,打印 0x25A0 1000 …

c++ winapi gdi

0
推荐指数
1
解决办法
110
查看次数

如果我们不使用DeleteObject会发生什么

我们必须使用该DeleteObject函数来删除GDI对象.

但是如果我们不删除通过该CreatePen功能创建的GDI笔会发生什么?

c++ winapi gdi

-1
推荐指数
1
解决办法
120
查看次数

Windows低级图形

我是编程新手.我知道C/C++和Win32的基础知识.我现在正在尝试做图形,但我想要最快的连接到屏幕.我意识到大多数人都会使用Opengl或DirectX.但是,我不想要开销.我想从头开始控制像素数据.我知道GDI位图,但我不确定这是否是对数据的最佳访问.我知道我必须通过窗口进行交谈,这就是麻烦.Opengl和DirectX是否可以编译到GDI级别,或者他们是否采用特殊方式,绕过或使用类似的代码?请不要问我为什么要这样做.也许解释如何做到这一点可能会有所帮助.就像windows结合所有窗口来创建最终图像一样.

api directx graphics winapi gdi

-2
推荐指数
1
解决办法
2593
查看次数

标签 统计

gdi ×6

winapi ×5

c++ ×4

api ×1

bitmap ×1

directx ×1

graphics ×1

mask ×1

mfc ×1

windows-ce ×1