请问这个图形该如何画?

宙斯之神 2010-01-06 11:48:04
做个控件,假设它的长宽分别为1000和100,这个控件由好多的小矩形组成,如果我要把长度方向放入3000个矩形,宽度方向上放置25个矩形,这些矩形(3000*25个)该如何去画呢,因为矩形的边长用长度除以个数的话,长度=1000/3000,
宽度=100/25,于是得到的长度不到1,宽度为4,用FillRect就画不出来矩形了,请问怎样才能解决这个问题?
...全文
185 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
ShinyWang 2010-01-14
  • 打赏
  • 举报
回复
为什么有这么奇怪的需求?
QEVXWYQD 2010-01-14
  • 打赏
  • 举报
回复
还有用FillRect画的时候 边长不到1,直接取整就变成0了,所以画不出来??
参数不能是浮点型的吗??
zhoujk 2010-01-07
  • 打赏
  • 举报
回复
太多以后,想数也数不出来,显示成很多就行了。要不给用户标个数字提示一下也行。放大再显示细节
宙斯之神 2010-01-06
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 lambochan 的回复:]
简单...直接把你的1000x100涂上你设定的色,等于告诉你的用户,我这里面有3000x25个矩形啦:
当然,这是因为“密密麻麻”才显示成那样的...hohoho


last:
当然,你还要允许它们放大才能回到你的初衷。。。
估计你以为偶在开你的玩笑吧,哈哈哈哈.
[/Quote]

就是因为画的每个矩形的颜色都不一样,才觉得不太好弄,
还有用FillRect画的时候 边长不到1,直接取整就变成0了,所以画不出来
lambochan 2010-01-06
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 silenker 的回复:]
用滚动条啊,只显示当前显示范围内的那部分矩形。
拖动滚动条的时候更新显示范围。
[/Quote]

拜托..先逐个字看清楚LZ的要求... -_-"
引力场变动源 2010-01-06
  • 打赏
  • 举报
回复
用滚动条啊,只显示当前显示范围内的那部分矩形。
拖动滚动条的时候更新显示范围。
lambochan 2010-01-06
  • 打赏
  • 举报
回复
简单...直接把你的1000x100涂上你设定的色,等于告诉你的用户,我这里面有3000x25个矩形啦:
当然,这是因为“密密麻麻”才显示成那样的...hohoho










































last:
当然,你还要允许它们放大才能回到你的初衷。。。
估计你以为偶在开你的玩笑吧,哈哈哈哈.
vclongking 2010-01-06
  • 打赏
  • 举报
回复
你指的画不出是看上去没矩形效果?
CBEMA 2010-01-06
  • 打赏
  • 举报
回复
好像是根据分辨率画的。一个点单位就是1,如果屏幕时1024的长,只有1024个点吧,怎么能画3000的长呢?

按比例缩放,好像也没办法在1024的屏幕上画3000个矩形吧!
CBEMA 2010-01-06
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 silenker 的回复:]
用滚动条啊,只显示当前显示范围内的那部分矩形。
拖动滚动条的时候更新显示范围。
[/Quote]

依据4楼的意思,可以将长度1用3个像素表示,也就是1000的长,用3000个像素值表示。
为了看清楚矩形,可以放到更大。比如将长度1用30个像素表示。

然后用滚动条只显示当前显示范围内的那部分矩形。
拖动滚动条的时候更新显示范围。
daredjever 2010-01-06
  • 打赏
  • 举报
回复
学习,好奇怪的东西,为什么要这样画?
cnzdgs 2010-01-06
  • 打赏
  • 举报
回复
SetMapMode、SetWindowExt、SetViewportExt。
lambochan 2010-01-06
  • 打赏
  • 举报
回复
有啊,StretchBlt()..你想怎样缩就怎样缩.
不过缩之前要先设置一下它的filter.
filter函数是SetStretchBltMode( HALFTONE ).
宙斯之神 2010-01-06
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 lambochan 的回复:]
引用 6 楼 kkkandy 的回复:
就是因为画的每个矩形的颜色都不一样,才觉得不太好弄,
还有用FillRect画的时候 边长不到1,直接取整就变成0了,所以画不出来


颜色不同的话,你先画个N大的,里面有3K*25个矩形,然后缩小到大小为3000*100,把它弄到你的"控件"上..
"要看真面目时请放大"..不就得了..
[/Quote]

谢谢你的建议,缩小的话有这样的按照比例缩小的函数么?
lambochan 2010-01-06
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 lambochan 的回复:]
颜色不同的话,你先画个N大的,里面有3K*25个矩形,然后缩小到大小为3000*100,把它弄到你的"控件"上..
"要看真面目时请放大"..不就得了..
[/Quote]

汗..手快快打错了,是1000*100. -_-"
lambochan 2010-01-06
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 kkkandy 的回复:]
就是因为画的每个矩形的颜色都不一样,才觉得不太好弄,
还有用FillRect画的时候 边长不到1,直接取整就变成0了,所以画不出来
[/Quote]

颜色不同的话,你先画个N大的,里面有3K*25个矩形,然后缩小到大小为3000*100,把它弄到你的"控件"上..
"要看真面目时请放大"..不就得了..
fandh 2010-01-06
  • 打赏
  • 举报
回复
设置一共最小宽度吧!比如1,允许多个重叠!
好像没有什么好方法能解决!

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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