请问各位,如何将自定义图形在规定的矩形中显示,而不显示所超出的部分。。谢谢!

CandyCat 2001-04-28 09:01:00
在view中有一个矩形区域,我只想让所画的直线、圆显示在该区域中,而圆和直线在区域外超出的部分并不显示,该怎么办呢?谢谢啦。
...全文
233 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
brallow 2001-04-29
  • 打赏
  • 举报
回复
我告诉你吧:
在对wm_paint的消息处理中有一个ps结构变量其中有一个变量为rect类型
这一个变量中记录了需要重画的区域,你可一这样:每次受到一个wm_paint
消息了之后自己在发一个wm_paint给自己 但是在ps 中的那一个rect类型
的变量一定要设置为你所限定的那个范围,在对wm_paint的处理之前一定要
用begin...来获得hDC否则的话 还是会画到外面去的。
但是有一点:windows会自动把几个wm_paint 也就是说他回自动的把几个
wm_paint消息中的那几个矩形合成一个最大的矩形 所以你收到一个要重画
窗口的消息是一定要把窗口有效化,调用invaliadrect()函数 在发出消息
当然 还有一些逻辑上的问题要处理, 否则的话 他回一直这样画下去的
yinxingshu 2001-04-28
  • 打赏
  • 举报
回复
使用裁减,直线的裁减,圆的裁减,多边形的裁减。。。不过很麻烦,我做了:-(
还有,一般这种作图都讲求一种好的显示效果的(如果你做的是商业软件的话),所以总是先画到内存DC上(有很多好处),然后再贴过去的。
如果变动较多就使用区域吧,最方便了。不过裁减是最好的。
CandyCat 2001-04-28
  • 打赏
  • 举报
回复
没错!joke100(joke100),你说得对!谢谢!!!
fulaoxiao 2001-04-28
  • 打赏
  • 举报
回复
在你的draw 函数中处理嘛
CandyCat 2001-04-28
  • 打赏
  • 举报
回复
to joke100
我所画的直线和圆是自己所定义的类,可以将他们移动位置,改变大小。我不想让他们成为bitmap啊。
wjyasd 2001-04-28
  • 打赏
  • 举报
回复
跟上!
joke100 2001-04-28
  • 打赏
  • 举报
回复
sorry,
用区域
CRgn rgn;
rgn.CreateRectRgn(0, 0, 100, 100); // 设置矩形大小
pDC->SelectClipRgn();
...
joke100 2001-04-28
  • 打赏
  • 举报
回复
BOOL CDC::StretchBlt( int x, int y, int nWidth, int nHeight, CDC* pSrcDC, int xSrc, int ySrc, int nSrcWidth, int nSrcHeight, DWORD dwRop );


16,548

社区成员

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

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

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