重绘问题

denglei265 2007-04-16 09:15:57
我要实现一个类似Windows任务管理器中CPU使用的界面,但是实现得不理想,请教原因:
创建了一个CView视图,定义了一个私有成员CRect rect;
在OnPaint()中如下,
CPaintDC dc(this);

GetWindowRect(rect);
ScreenToClient(rect);

CDC MemDC; //首先定义一个显示设备对象
MemDC.CreateCompatibleDC(&dc);

CBitmap MemBitmap;//定义一个位图对象
MemBitmap.CreateCompatibleBitmap(&dc,rect.Width(),rect.Height());
MemDC.SelectObject(&MemBitmap);

static int i=0;
MemDC.BitBlt(0,0,rect_2.Width(),rect_2.Height(),&dc,i,0,SRCCOPY);
MemDC.StretchBlt(i,0,rect_2.Width(),rect_2.Height(),&dc,0,0,rect_2.Width()-i,rect_2.Height(),SRCCOPY);

DrawWave(&MemDC); //绘制网格线

dc.BitBlt(0,0,rect_2.Width(),rect_2.Height(),&MemDC,0,0,SRCCOPY);
i+=8;

//绘图完成后的清理
MemBitmap.DeleteObject();
MemDC.DeleteDC();

在OnTimer()函数中,
CDC *pDC=GetDC();
DrawWave(pDC);

InvalidateRect(rect);
RedrawWindow();

在DrawWave(CDC *pDC)函数中
for(int i = rect.left ; i < rect.right; i += 13)
{
pDC->MoveTo(i, rect.top);
pDC->LineTo(i, rect.bottom);
}
for(int j = rect.top ; j < rect.bottom; j += 13)
{
pDC->MoveTo(rect.left , j);
pDC->LineTo(rect.right, j);
}

结果却是:图像不断左移,但是网格线却是没有绘画,请问是为什么啊?
...全文
203 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
denglei265 2007-04-19
  • 打赏
  • 举报
回复
实验过了,还是那个样子.不过谢谢了,先结帖再说吧.
denglei265 2007-04-17
  • 打赏
  • 举报
回复
各位,能不能加我MSN或者QQ呢,呵呵,这么写比较慢.我的MSN是:dengelei265@163.com
QQ:4813730,谢谢了.
菜牛 2007-04-17
  • 打赏
  • 举报
回复
在OnPaint()中如下,
{
CPaintDC dc(this);
CRect rect; //不用成员变量
GetClientRect(&rect);

CDC MemDC; //首先定义一个显示设备对象
MemDC.CreateCompatibleDC(&dc);

CBitmap MemBitmap;//定义一个位图对象
MemBitmap.CreateCompatibleBitmap(&dc,rect.Width(),rect.Height());
CBitmap *pBmpOld = MemDC.SelectObject(&MemBitmap);

DrawWave(&MemDC, rect); //绘制网格线

dc.BitBlt(0, 0,rect.Width(), rect.Height(), &MemDC, 0, 0, SRCCOPY);

//绘图完成后的清理
MemDC.SelectObject(pBmpOld);
MemBitmap.DeleteObject();
MemDC.DeleteDC();
}

DrawWave(CDC *pDC)改为DrawWave(CDC *pDC, const CRect& rect)

OnTimer()函数改为
{
static int i=0;
Invalidate(FALSE);
i+=8;
}

基本代码就是这样了,还有问题就是DrawWave本身的问题了,贴出代码来看看。
denglei265 2007-04-17
  • 打赏
  • 举报
回复
对不起,上面的代码有个小问题,rect_2全改为rect;

另外,我修改了一下,
在OnPaint()中如下,
{
CPaintDC dc(this);
GetClientRect(&rect);

CDC MemDC; //首先定义一个显示设备对象
MemDC.CreateCompatibleDC(&dc);

CBitmap MemBitmap;//定义一个位图对象
MemBitmap.CreateCompatibleBitmap(&dc,rect.Width(),rect.Height());
MemDC.SelectObject(&MemBitmap);

static int i=0;
DrawWave(&MemDC,rect); //绘制网格线

dc.BitBlt(0,0,rect.Width(),rect.Height(),&MemDC,0,0,SRCCOPY);
i+=8;

//绘图完成后的清理
MemBitmap.DeleteObject();
MemDC.DeleteDC();
}

DrawWave(CDC *pDC)改为DrawWave(CDC *pDC,CRect rect)

OnTimer()函数改为
{
InvalidateRect(rect);
RedrawWindow();
}
但是结果还是一样.
菜牛 2007-04-16
  • 打赏
  • 举报
回复
你的代码是比较诡异,搞不懂几个DC拷来拷去的干什么。所有的绘图代码(背景、网格、数据)都绘制到MemDC中,然后BitBlt一次就行了呀。在OnTimer中,只需要刷新就好了,也不要调用别的东西。绘图时的矩形,应该用GetClientRect得到客户矩形。另外,矩形可以作为参数传入DrawWave中,而不是作为类的成员变量,这样通用性更好。。
内容概要:本文针对网型T型三电平逆变器的低电压穿越(LVRT)能力及其综合控制策略开展深入研究,重点分析电网电压跌落条件下逆变器的动态响应特性与稳定性控制方法。研究基于Simulink平台构建详细的系统仿真模型,融合改进的电流环控制策略与中点电位平衡控制算法,有效提升逆变器在故障工况下的电流跟踪精度、过流抑制能力和直流侧中点电压稳定性。通过多场景仿真验证,所提出的综合控制策略能够显著增强逆变器在低电压穿越过程中的鲁棒性与电能质量,确保新能源系统在电网扰动下的持续可靠并网运行。; 适合人群:电力电子、新能源发电、电力系统自动化等相关专业的研究生、科研人员及从事并网逆变器设计与控制的工程技术人员。; 使用场景及目标:①深入理解三电平逆变器在电网故障下的运行机理与控制挑战;②掌握低电压穿越技术中电流限幅、故障响应及中点电位平衡的核心控制方法;③应用于光伏、风电等新能源并网系统的控制策略开发与仿真验证; 阅读建议:建议结合提供的Simulink仿真模型进行动手实践,重点关注控制器参数设计、中点电位观测与调节模块的实现逻辑,并通过对比不同电压跌落深度和控制策略的仿真结果,深化对系统动态行为与控制性能的理解。
yolo算法港口码头船舶目标检测数据集 目标类别:['ship'] 中文类别:['船舶'] 训练集:16046 张 验证集:1971 张 测试集:983 张 总计:19000 张 该数据集提供了data.yaml文件,内容如下: train: ../train/images val: ../valid/images test: ../test/images nc: 1 names: ['ship'] 该数据集聚焦于港口码头及近海水域的船舶检测任务,涵盖多种类型船舶在不同天气、光照和水文条件下的真实场景。图像样本覆盖了货轮、客轮、拖船、油轮及工程船等典型船只,充分体现了海上交通与港口作业的复杂性与多样性。通过高精度标注,该数据集为海上智能监控、船舶识别与航行安全预警系统提供了高质量的数据支撑,具有重要的实际应用价值。 该数据集在训练集、验证集和测试集之间实现了科学合理的分布,训练集包含16046张图像,验证集1971张,测试集983张,总计19000张。这种分布结构确保了模型在训练过程中具备充足的样本学习能力,同时验证集与测试集规模适中,能够有效评估模型的泛化性能与稳定性,符合深度学习项目对数据划分的标准要求。 该数据集的标注工作严谨规范,所有船舶均采用精确边界框进行标注,覆盖了不同尺寸、姿态和视角下的目标实例。标注框紧密贴合船舶轮廓,未出现明显偏移或遗漏,且在复杂背景(如水面反光、雾天、桥梁遮挡)下仍保持高一致性。标注信息完整可靠,为后续模型训练提供了坚实基础。 该数据集可广泛应用于港口自动化管理、海上交通监控、船舶动态跟踪、航道安全预警以及海洋执法等领域。其丰富的场景覆盖和多样化的船舶类型使其特别适用于智慧港口建设、海上搜救系统开发及航运物流智能化升级,能够有效提升相关系统的识别准确率与响应效率,推动海洋经济数字化转型。

16,550

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧