Orz_TanLaLa 2022-01-09 11:09 采纳率: 66.7%
浏览 15
已结题

Direct2DDrawLine后窗口背景变黑, 左上角出现一道红色小痕

更新:

发现错误

while (msg.message != WM_QUIT)
    {
        if (PeekMessage(&msg, nullptr, 0, 0, PM_REMOVE)) {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
        rend.DrawLine();
    }

效果:

img


仍是黑色背景

原文

现象如图

img

我的代码(其他代码都是vs新建项目自带的,只把menu、快捷键删掉了)

Renderer.h

#pragma once

#include <d2d1.h>
#pragma comment(lib, "d2d1.lib")

class Renderer {
private:
    ID2D1Factory *fac;
    ID2D1HwndRenderTarget *rt;
    ID2D1SolidColorBrush *bru;
    RECT rc;
public:
    Renderer(HWND hwnd) {
        D2D1CreateFactory(
            D2D1_FACTORY_TYPE_SINGLE_THREADED,
            &fac
        );

        GetClientRect(hwnd, &rc);
        fac->CreateHwndRenderTarget(
            D2D1::RenderTargetProperties(),
            D2D1::HwndRenderTargetProperties(
                hwnd,
                D2D1::SizeU(
                    rc.right - rc.left,
                    rc.bottom - rc.top
                )
            ),
            &rt
        );

        rt->CreateSolidColorBrush(
            D2D1::ColorF(D2D1::ColorF::Blue),
            &bru
        );
    }

    void DrawLine() {
        rt->BeginDraw();
        
        rt->DrawLine(
            D2D1::Point2F(20, 20),
            D2D1::Point2F(200, 200),
            bru
        );

        rt->EndDraw();
    }
};


主循环的修改内容

Renderer rend(hWnd);

    MSG msg;
    PeekMessage(&msg, nullptr, 0, 0, PM_REMOVE);
    TranslateMessage(&msg);
    DispatchMessage(&msg);
    // 主消息循环:
    while (msg.message != WM_QUIT)
    {
        PeekMessage(&msg, nullptr, 0, 0, PM_REMOVE);
        TranslateMessage(&msg);
        DispatchMessage(&msg);
        rend.DrawLine();
    }

完全按照microsoft这个教程写的

https://docs.microsoft.com/zh-cn/windows/win32/direct2d/getting-started-with-direct2d

我想要达到的结果

白色背景,一条蓝色的线

  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 1月17日
    • 修改了问题 1月9日
    • 修改了问题 1月9日
    • 修改了问题 1月9日
    • 展开全部

    悬赏问题

    • ¥15 前端el-table表头显示不全
    • ¥30 如何实现用乐迪AT9S遥控器控制步进电机
    • ¥50 ASP+IIS+SQL2008,search.asp搜索突然失效
    • ¥20 yolov5中train过程中,第一次完整训练的验证过程中,图像处理尺寸和设置尺寸不一致(设置尺寸失效)的问题
    • ¥20 自建A网站如何调用B网站网页数据
    • ¥15 在edge和chrome浏览器,怎么在新标签页打开链接
    • ¥15 c#如何使用scottplot给已画好的自定义热度图,增加一个一定的colorbar
    • ¥15 信贷平台.用户信用评估和风险评估怎么做,希望来个做过的Java.有合作的机会
    • ¥15 IMageEN获得图形顶点坐标的问题
    • ¥50 软件PC客户端抓包,获取http请求和响应