• 5137阅读
  • 4回复

想自己创建图片该用哪一个类? [复制链接]

上一主题 下一主题
离线piglp
 
只看楼主 倒序阅读 楼主  发表于: 2007-09-19
— 本帖被 XChinux 执行加亮操作(2008-07-18) —
各位高手:
原来什么都没有,然后由程序计算后得出各个点的RBG值(也可以是调色板中某个颜色的序号),
然后把这些像素显示到屏幕上。
譬如:
我用程序创建了:
(22,33,44)    (24,25,26)
(55,22,33)    (77,88,99)
这样的“图像”,每个括号中表示一个RGB值,一个括号就是一个像素点,整个“图像”一共有4个像素。
或者是用程序创建了:
42      254
  7        98
这样的“图像”,每个数表示一个调色板上的某一颜色的序号值,一个数就是一个像素点,整个“图像”一共有4个像素。
例子中举的是2×2个像素的,但这个数是可变的——由程序计算出来的,但可以肯定是长方形的“图像”。
创建之后我想显示到屏幕上。

请问想实现上述功能我应该学习(或者说 可以应用)那些类?
非常感谢!
离线mzl626

只看该作者 1楼 发表于: 2007-09-19
你的这个东东应用不叫图片的,图片有自己特有的格式的,如果非要显示的话,我认为你可以利用QColor 设置RGB,然后利用QBrush 获得该颜色,然后利用QPainter画
离线piglp
只看该作者 2楼 发表于: 2007-09-22
引用第1楼mzl626于2007-09-19 16:59发表的  :
你的这个东东应用不叫图片的,图片有自己特有的格式的,如果非要显示的话,我认为你可以利用QColor 设置RGB,然后利用QBrush 获得该颜色,然后利用QPainter画


首先谢谢你的指点 :-)
但是我不能用画图的方法画,因为数据是每个点都不同的,数据不同颜色就不同,而颜色至少也得有256种,用画图的方法图像会显示得很慢,如果不用双缓冲,图像将是一点一点显示出来的,这是我用vc在windows下编同样的东东得到的经验。我当时的处理方法是用“设备相关位图(DDB)”解决的(我也想用设备无关位图(DIB)解决了,但在vc中DIB太难了)。
所以说,我这个的要求必须用“位图”,而且还必须是能“从无到有”的创建(打开一个现成的图片再更改的方法可不行)
再次谢谢你
我以后想用qt编写界面,用vc太不灵活了~~  :-) 
请高手不吝指教啊!!!
离线liur
只看该作者 3楼 发表于: 2007-09-23
我认为你在windows上的处理方法完全能够解决.

qt 中要使用那个类, 我认为你可以先看看那个图片支持类有 支持 buffer date 的. 只要你先在内存中创建一个 bmp ,然后使用 图片支持类的 load(bmpbuffer); 这样 类中就保存了你的图片了.然后显示.

我目前看到 QPixmap 类有如下的函数:
QPixmap::QPixmap ( const char * xpm[] )
bool loadFromData ( const uchar * buf, uint len, const char * format = 0, ColorMode mode = Auto )
bool loadFromData ( const uchar * buf, uint len, const char * format, int conversion_flags )
bool loadFromData ( const QByteArray & buf, const char * format = 0, int conversion_flags = 0 )

或许你可以从这方面下手.
离线piglp
只看该作者 4楼 发表于: 2007-09-24
谢谢~~~
快速回复
限100 字节
 
上一个 下一个