日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

QT技术应用_2D绘图(转)

發布時間:2025/3/15 c/c++ 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 QT技术应用_2D绘图(转) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

QT技術應用_2D繪圖(轉)

分類: 與企業共成長 6170人閱讀 評論(0) 收藏 舉報 qt圖形存儲postscript框架windows

http://www.rosoo.net/a/201102/10900.html

?

?

2D繪圖?
Qt4中的2D繪圖部分稱為Arthur繪圖系統.它由3個類支撐整個框架,QPainter,QPainterDevice和QPainterEngine.QPainter用來執行具體的繪圖相關操作如畫點,畫線,填充,變換,alpha通道等。QPainterDevice是QPainter用來繪圖的繪圖設備,Qt中有幾種預定義的繪圖設備,如QWidget,QPixamp,QPrinter等.他們都從QPaintDevice繼承。QPaintEngine類提供了不同類型設備的接口,QPaintEngine對程序員不透明,由QPainter,QPaintDevice類與其進行交互。
從Qt4.2開始,Graphics View框架取代了QCanvas,QGraphics View框架使用了MVC模式,適合對大量2D圖元的管理,Grphics View框架中,場景(scene)存儲了圖形數據,它通過視圖(view)以多種表現形式,每個圖元(item)可以單獨進行控制.
Arthur繪圖基礎
在Arthur繪圖框架中的基本繪圖元素是畫筆,畫刷。
QPainter類具有GUI程序需要的絕大多數函數,能夠繪制基本圖形(點,線,矩形,多邊形等)以及復雜的圖形(如繪圖路徑).使用繪圖路徑(QPaintPath)的優點是復雜形狀的圖形之用生成一次,以后再使用的時候是需要調用QPainter::drawPath()就可以了。QPainterPath對象可以用來填充,繪制輪廓。
線和輪廓都可以用畫筆(QPen)進行繪制,畫刷(QBrush)進行填充。畫筆定義了風格(線形),寬度,筆尖畫刷以及端點是如何繪制的(cap-style),端點的連接方式(join-style)
.畫刷用來填充畫筆繪制的圖形,可以定制不同的填充模式和顏色的畫刷。
當繪制文字時,字體使用QFont類定義,Qt使用指定字體的屬性,如果沒有匹配的字體,Qt將使用最接近的字體。字體屬性可以通過QFontInfo來獲取。

字體的度量(measurement)
使用QFontMetrics類來獲取。QFontDatabase類可以獲得底層窗口系統所有可用的字體.
通常情況下QPainter以默認的坐標系統進行繪制,也可以用QMatrix類對坐標進行變換。
當繪制時,可以使用QPainter::RenderHint來告訴繪圖引擎是否啟用飯鋸齒功能使圖變得平滑。
QPainter::RenderHint的可取如表6-1中的值
------------------------------------
QPainter::Antialiasing?????????? 告訴繪圖引擎應該在可能的情況下進行邊的反鋸齒繪制
QPainter::TextAntialiasing?????? 盡可能的情況下文字的反鋸齒繪制
QPainter::SmoothPixmapTransform? 使用平滑的pixmap變換算法(雙線性插值算法),而不是近鄰插值算法
------------------------------------
QPainter的繪圖函數?
------------------------------------
drawArc()???????????????????????????????? 弧
drawChord()?????????????????????????????? 弦
drawConvexPolygon()?????????????????????? 凸多邊形
drawEllipse()???????????????????????????? 橢圓
drawImage()?????????????????????????????? QImage表示的圖像
drawLine()??????????????????????????????? 線
drawLines()?????????????????????????????? 多條線
drawPath()??????????????????????????????? 路徑
drawPicture()???????????????????????????? 按QPainter指令繪制
drawPie()???????????????????????????????? 扇形
drawPixmap()????????????????????????????? QPixmap表示的圖像
drawPoint()?????????????????????????????? 點
drawPoints()????????????????????????????? 多個點
drawPolygon()???????????????????????????? 多邊形
drawPolyline()??????????????????????????? 多折線
drawRect()??????????????????????????????? 矩形
drawRects()?????????????????????????????? 多個矩形
drawRoundRect()?????????????????????????? 圓角矩形
drawText()??????????????????????????????? 文字
drawTiledPixmap()???????????????????????? 平鋪圖像
drawLineSegments()??????????????????????? 繪制折線
------------------------------------
drawPicture()函數負責繪制QPicture中存儲的QPainter指令,QPicture是可以記錄QPainter繪圖指令的類.它將QPainter的繪圖指令串行化為平臺無關的存儲格式。
下面的代碼將記錄的繪圖指令重繪。
QPicture picture;
picture.load("mypicture.pic");
QPainter painter(this);
painter.drawPicture(0,0,picture);//在(0,0)處重放繪圖指令,也可以使用QPicture::play()完成相同的功能

=========================================

使用畫筆
畫筆的屬性包括線型,線寬,顏色等。畫筆的屬性可以在構造函數中指定,也可以使用setStyle(),setWidth(),setBrush(),setCapStyle(),setJoinStyle()等函數逐項設定畫筆的各項屬性.Qt中使用Qt::PenStyle定義了6種畫筆風格,分別是Qt::SolidLine,Qt::DashLine,Qt::DotLine,Qt::DashDotLine,Qt::DashDotDotLine,
Qt::CustomDashLine.自定義線風格(Qt::CustomDashLine),需要使用QPen的setDashPattern()函數來設定自定義風格.
下面代碼設置了一個自定義QPen
QPen pen;
QVector?customDashes;
qreal blank=4;
dashes<<2< pen.setDashPattern(customDashes);

端點風格(cap style)
端點風格決定了線的端點樣式,它只對線寬大于1的線有效。Qt種定義了三種端點風格用枚舉類型Qt::PenCapStyle表示,分別為Qt::SqureCap,QT::FlatCap,Qt::RoundCap,
連接風格(Join style)
連接風格是兩條線如何連接,連接風格對線寬大于等于1的線有效。Qt定義了四種連接方式用枚舉類型Qt::PenStyle表示.分別是Qt::MiterJoin,Qt::BevelJoin,Qt::RoundJoin.
Qt::SvgMiterJoin.

2.畫刷
在Qt中圖形使用QBrush進行填充,畫刷包括填充顏色和風格(填充模式).在Qt中,顏色使用QColor類表示,QColor支持RGB,HSV,CMYK顏色模型。QColor還支持alpha混合的輪廓和
填充。基本模式填充包括有各種點,線組合的模式。Qt支持RGB,HSV,和CMYK顏色模型。RGB是面向硬件的模型。顏色由紅綠藍三種基色混合而成。HSV模型比較符合人對顏色的感覺,由
色調(0-359),飽和度(0-255),亮度(0-255)組成.CMYK由青,洋紅,黃,黑四種基色組成。主要用于打印機等硬件拷貝設備上。每個顏色分量的取值是0-255.另外QColor還可以用
SVG1.0中定義的任何顏色名為參數初始化.

Qt4提供了漸變填充的畫刷,漸變填充包括兩個要素,顏色的變化和路徑的變化。顏色變化可以指定從一種顏色漸變到另外一種顏色。也可以在變化的路徑上指定一些點的顏色進行分段漸變。
Qt4中,提供了三種漸變填充:線性(QLinearGradient),圓形(QRadialGradient)和圓錐漸變(QConicalGradient).所有的類都從QGradient類繼承.

------------------
線性漸變填充
線性漸變填充指定兩個控制點,畫刷在兩個控制點之間進行顏色插值。通過創建QLinearGradient對象來設置畫刷.
QLinearGradient linearGradient(0,0,200,100);
linearGradient.setColorAt(0,Qt::red);
linearGradient.setColorAt(0.5,Qt::green);
linearGradient.setColorAt(1,Qt::blue);
painter.setBrush(linearGradient);
painter.drawRect(0,0,200,100);
在QGradient構造函數中指定線行填充的兩點分別為(0,0),(100,100).setColorAt()函數在0-1之間設置指定位置的顏
------------------
圓形漸變填充
圓形漸變填充需要指定圓心,半徑和焦點。畫刷在焦點和圓上的所有點之間進行顏色插值。創建QRadialGradient對象設置畫刷
QRadialGradient radialGradient(50,50,50,30,30);
radialGradient.setColorAt(0.2,Qt::cyan);
radialGradient.setColorAt(0.8,Qt::yellow);
radialGradient.setColorAt(1,Qt::magenta);
painter.setBrush(radialGradient);
painter.drawEllipse(0,0,100,100);
-------------------------------
圓錐漸變填充
圓錐漸變填充指定圓心和開始角,畫刷沿圓心逆時針對顏色進行插值,創建QConicalGradient對象并設置畫刷.
QConicalGradient conicalGradient(60,40,30);
conicalGradient.setColorAt(0,Qt::gray);
conicalGradient.setColorAt(0.4,Qt::darkGreen);
conicalGradient.setColorAt(0.6,Qt::darkMagenta);
conicalGradient.setColorAt(1,Qt::drakBlue);
painter.setBrush(conicalGradient);
painter.drawEllipse(0,0,100,100);
---------------------------------
為了實現自定義填充,還可以使用QPixmap或者QImage對象進行紋理填充。兩種圖像分別使用setTexture()和setTextureImage()函數加載紋理.
=========================================
雙緩沖繪圖
在Qt4中,所有的窗口部件默認都使用雙緩沖進行繪圖。使用雙緩沖,可以減輕繪制的閃爍感。在有些情況下,用戶要關閉雙緩沖,自己管理繪圖。下面的語句設置了窗口部件
的Qt::WA_PaintOnScreen屬性 ,就關閉了窗口部件的雙緩沖.
mywidget->setAttribute(Qt::WA_PaintOnScreen);
由于Qt4不再提供異或筆,組合模式QPainter::CompostionMode_Xor()并不是異或筆,Qt4只提供了QRubberBand實現矩形和直線的繪圖反饋。因此要實現在繪圖中動態
反饋必須使用其他方法。程序中使用雙環沖來解決這個問題。在繪圖過程中,一個緩沖區繪制臨時內存,一個緩沖區保存繪制好的內容,最后進行合并。
在交互繪圖過程中,程序將圖像緩沖區復制到臨時緩沖區,并在臨時緩沖區上繪制,繪制完畢在將結果復制到圖像緩沖區,如果沒有交互復制,則直接將圖像緩沖區繪制顯示到屏幕上。
------------------------
使用alpha通道
在windows,Mac OSX和有XRender擴展的X11系統上,Qt4能夠支持Alpha通道,通過使用Alpha通道,可以實現半透明效果,QColor類中定義了Alpha通道的透明度,0表示完全透明
255表示完全不透明。注意QWidget類有一個屬性windowOpacity,通過setWindowOpacity(qreal level)可以設置窗口的透明度。但該屬性和Alpha通道的原理并不相同,Qt4在
Windows和Mac OS X平臺上才支持該屬性,但在X11平臺上卻需要Composite擴展才能工作。(alpha通道使用的是X11的xRender擴展).
---------------------------------------
繪圖設備
QPaintDevice類是實際的繪制設備的基類.QPainter能夠在QPaintDevice子類上進行繪制,如QWidget,QImage,QPixmap,QGLWidget,QGLPixelBuffer,QPicture,QPrinter
QSvgGenerator.要實現自己的繪圖設備,必須從QPaintDevice類繼承并實現其虛函數QPaintDevice::paintEngine()以告之QPainter能夠在這個特定的設備上繪制圖形,同時還需要從
QPaintEngine類繼承自定義的圖形繪制引擎。

1 QWidget
QWidget是所有用戶界面元素的基類,窗口部件時用戶界面的原子元素,他接受鼠標,鍵盤,窗口系統的其他事件并在屏幕上繪制自己。
2 QImage
QImage類提供了與硬件無關的圖像表示,它為直接操作像素提供優化,QImage支持單色,8-bit,32-bit和alpha混合圖像,使用QImage的優點在于可以獲得平臺無關的繪制操作,另外還有一個好處
時圖像可以不必在GUI線程中處理。
3 QPixmap
QPixmap時后臺顯示的圖像,它為在屏幕上顯示圖像提供優化,不同于QImage,pixmap的圖像數據用戶不可見,而且由底層窗口系統管理,為了優化QPixmap圖像,Qt提供了QPixmapCache類來存儲
臨時的pixmap.Qt還提供了QPixmap的繼承類QBitmap類,QBitmap表示單色的pixmap,主要用來創建自定義的QCursor和QBrush對象,構造QRegion對象,設置pixmap和窗口部件的掩碼。
4 OPenGLWidget
Qt提供了QtOpenGL模塊來實現OpenGL操作,QGLWidget允許使用OpenGL API進行繪制。同時QGLWidget時QWidget的子類,因此QPainter也可以在上面繪制。這樣可以使Qt能夠利用OpenGl
完成繪制操作,如變換和繪制pixmap
5 pixel Buffer
QGLPixelBuffer從QPaintDevice繼承,封裝了OpenGL pbuffer.使用pbuffer繪制通常時全硬件加速,這比使用QPixmap繪制更為迅速。
6 FrameBuffer
QGLFrameBufferObject從QPaintDevice繼承,QGLFrameBufferObject封裝了OpenGL frameBuffer對象,FrameBuffer對戲那個用來實現后臺屏幕繪制,比pixel buffer更好一些。
7 picture
QPicture類時能夠記錄和重演QPainter命令的繪圖設備,picture串行化painter的命令為平臺無關的格式,QPicture同時也于分辨率無關,如QPicuture能夠在不同的設備上(svg,pdf,ps
打印機和屏幕)有一只的顯示。QPicture::load()和QPicture::save()函數分別完成載入和存儲圖像。
8 Printer
QPrinter 類時在打印機上繪制的繪圖設備,在Windows和MAC OS X上,QPrinter使用內建的打印機驅動程序,在X11上,QPrinter山城postscript代碼并發送給lpr,lp或者其他打印程 序,QPrinter可以在任意其他QPrintEngine對象上打印,也可以直接生成PDF文件。
QPrintEngine類定義了QPrinter如何和其他打印機系統交互的接口,主要創建自己的打印引擎時,可以從QPaintEngine和QPaintEngine上繼承。
=========================================

坐標系統與坐標變換

1. Qt坐標系統由QPainter控制,同時也由 QPaintDevice和QPaintEngine類控制.QPaintDevice類是繪圖設備的基 類,QWidget,QPixmap,QImage,和QPrinter都是QPaintDevice類的子類。Qt繪圖設備默認坐標原點是左上角,X軸 向右增長,Y軸向下增長,默認的單位在基于像素的設備上是像素,在打印機設備上是1/72英寸(0.35毫米).QPainter的邏輯坐標與 QPainterDevice的物理坐標之間的映射由QPainter的變換矩陣,視口和窗口處理。邏輯坐標和物理坐標也是一直的。QPainter也支 持坐標變換(如旋轉和伸縮);

2. 坐標變換。
通常QPainer在設備的坐標系統上繪制圖形,但QPainter也支持坐標變換。可以通過QPainter::scale()函數進行比例變換。使用 QPainter::rotate()函數進行旋轉變換。平移變換則使用QPainter::translate()函 數,QPainter::shear()函數對圖形進行扭曲操作,所有變換操作的變換矩陣都可以通過QPainter::wordMatrix()函數取 出。不同的變換矩陣可以使用堆棧保存。
用QPainter::save()保存變換矩陣到堆棧,用QPainter::restore()函數將其彈出堆棧。
? QMatrix定義了系統的二維變換。QMatrix對象實際上定義了一個3x3矩陣。
? --------------
? m11? m12? 0
? m21? m22? 0
? dx?? dy?? 1
? ---------------
?? x//'=m11*x+m21*y+dx;
?? y//'=m22*y+m12*x+dy;
其中dx,dy表示水平和垂直偏移量,m11,m22表示水平和垂直方向上的比例。m12和m21表示水平和垂直方向上的扭曲程度。
矩陣可以通過setMatrix函數進行設置,然后可以使用translate(),rotate(),scale(),shear()等函數進行變 換.Qt4.3中引入QTransform類表示變換矩陣。與QMatrix不同的是,QTransform()支持透視變換。使用toAffine() 函數可以將QTransform對象轉換為QMatrix對象。這將丟失QTransform的透視變換數據。邏輯坐標和物理坐標的變換由 QPainter的worldMatrix()函數。以及QPainter的viewport()和window()函數處理。視口表示物理坐標下的任意 矩形。而在窗口表示在邏輯坐標下的相同矩形。默認情況下邏輯坐標與物理坐標時相同的。與繪圖設備上的矩形也是一致的。使用窗口-視口變換可以使邏輯坐標符 合自定義要求,這個機制通常用來完成設備無關的繪圖代碼。例如,可以設置邏輯坐標(-100,-100)到(100,100)且在原點(0,0),通過調 用QPainter::setWindow()函數可以完成下列操作。
?QPainter painter(this);
?painter.setWindow(QRect(-100,-100,200,200));
現 在,邏輯坐標的(-100,-100)對應著繪圖設備的(0,0),這樣可以繪制獨立于設備,始終在指定邏輯坐標上工作。設置窗口或視口矩形實際上是執行 線性變換。本質上是窗口四個角映射到對應的視口四個角,反之亦然,因此保持視口和窗口x軸和y軸之間的比例變換一致,保證變換沒有變形。窗口-視口變換只 是線性變換,不執行裁剪操作,例如當繪制超出窗口后,這些繪制仍然 通過線性變換映射到視口進行繪制。Qt的繪制過程是進行坐標變換,在進行窗口-視口變換。

=========================================
使用不同的字體

Qt提供了Font類來表示字體,當創建QFont對象時,Qt會使用指定的字體,如果沒有對應的字體,Qt將尋找一種最接近的已安裝字體。字體信息可以通過QFontInfo 取出,并可用QFontMetrics取得字體的相關數據。函數exactMatch()判斷底層窗口系統中是否有完全對應的字體。使用 QApplication::setFont()可以設置應用程序默認的字體,如果選擇的字體不包括所有要顯示的字符,QFont將會嘗試尋找最基接近的 字體。當QPainter繪制指定的字體中不存在的字符時將繪制一個空心的正方行。


繪圖路徑? --QPainterPath
繪圖路徑(painter path)由基本圖元(矩形,橢圓,直線,曲線)組成,繪圖路徑可以是閉合的路徑,如矩形和圓,或者是非閉合的路徑,如直線和曲線。繪圖路徑在Qt中使用QPainterPth類表示,它提供了繪圖操作的容器,可以使圖形能夠復用。繪圖路徑可以進行填充,顯示輪廓和裁剪。要生成可填充的輪廓的繪圖路徑,可以使用QPainterPathStroker類.使用QPainterPath的優點是復雜的圖形只需創建一次,就可以多次使用。QPainterPath對象可以時只有起點的空路徑,或者從其他QPainterPath對象復制,創建了QPainterPath對象后,可以使用lineTo(),cubicTo(),quadTo() 函數將直線和曲線添加到路徑中來,直線和曲線從currentPosition()開始繪制。currentPosition()總是返回最后的子路經繪 制的終點。使用moveTo()函數可以在不增加路徑的情況下移動currentPositon(),它關閉了一個子路經,開始一個新的子路經。 closeSubPath()也可以關閉當前路徑,并從currentPosition()連接一條直線到繪圖路徑的起點。QPainter可以使用 addEllipse(),addPath(),addRect(),addRegion(),addText()將Qt的一些基本圖元加入繪圖路徑。一 個已有的繪圖路徑可以通過connectPath()函數加入到另一個繪圖路徑中。
如下代碼繪制了一個箭頭:
QPainterPath path;
path.moveTo(10,100);
path.cubicTo(10,100,100,10,200,70);
path.lineTo(200,50);
path.lineTo(220,80);
path.lineTo(200,110);
path.lineTo(200,90);
path.cuticTo(200,100,100,50,50,100);

QPainter painter(this);
QPen pen(QColor(255,0,0),2);
painter.setPen(pen);
painter.drawPath(path);

Qt提供了兩種填充方式,Qt::OddEventFill和Qt::WindingFill.Qt::OddEvent時默認的填充規則,它指定 QPainterPath使用奇偶填充規則,該規則判斷一個點是否在論經圖形內的方法是從該店畫一條水平線到路徑外,計算水平線和路徑的交點數,如果交點 時奇數個則說明該點在路徑圖形內。QPainterPath還有一些函數可以獲取路徑信息,如elementAt()函數可以取出指定的子路經元素,
isEmpty() 函數判斷當前路徑是否為空。controlPointRect()函數返回路徑中所有的點和控制點的矩形,該函數運行速度比返回精確包容框 boundingRect()函數快得多。contains()函數判斷一個點或一個矩形是否在路徑內。intersects()判斷指定的矩形與路徑是 否相交.QPainterPath可以將矩形圖形轉換為其他圖形,如使用toFillPolygon(), toFillPolygon(),toSubpathPOlygons()函數將路徑轉化為多邊形。
QPainterPath還可以使用文字作為路徑,下面的代碼演示了文字路徑,并使用線性漸變填充。
QLinearGradient linearGrad(QPointF(200,0),QPointF(1000,0));
linearGrad.setColorAt(0,Qt::black);
linearGrad.setColorAt(1,Qt::white);
QFont font("隸書",80);
font.setBold(true);
QPainterPath textPath();
textPath.addText(200,300,font,tr("電子工業出版社"));
painter.setBrush(linearGrad);
painter.drawPath(textPath);

=========================================
QImage和QPixmap繪圖設備
Qt 提供了4個處理圖像的類。QImage,QPixmap,QBitmap,QPicure.他們有著各自的特點。QImage優化了I/O操作,可以直接 存取操作像素數據。QPixmap主要用來在屏幕上顯示圖像。QBitmap從QPixmap繼承,只能表示兩種顏色,QPicture是可以記錄和重放 QPrinter命令的類。QImage提供了與硬件無關的圖像表示方法。通過QImage可以直接存取像素數據,QImage也可以用作繪圖設備。
QImage 支持的圖像顏色可以是單色,8位,32位和alpha混合的格式。因為QImage從QPainterDevice繼承,所以QPainter可以直接在 QImage上繪圖。除了繪制文字格式外(QFont依賴于底層的GUI).其他的繪制操作可以在任意線程中完成,如果要在其他線程中繪制文字,可以使用 QPainterPath。QImage對象具有隱式共享,作為傳值參數,可以使用數據流及進行比較等特性。
讀入圖像可以通過QImage構造函 數,load(),loadFromData()幾種方法完成。還可以通過QImage的靜態函數fromData()由指定數據構造一個QImage對 象。既可以從文件系統裝入,也可以從Qt應用程序的嵌入式資源中讀取,使用save()可以保存QImage對象。可以通過 QImageReader::supportedImageFormats()和 QImageWriter::supportedImageFormats()獲取QImage支持的所有文件格式列表。
---------------------------------
QImage函數
---------------------------------
幾何函數

size(),widt(),dotsPermeterX(),dotsPerMeterY()函數獲取圖像大小和比例信息。
rect()函數返回圖像的包容矩形,valid()測試給定的坐標是否在此矩形內。offset()獲取圖像和其他圖像之間的相對偏移量。setOffset()函數設置偏移量。

顏色函數

某個像素的顏色可以通過pixel函數獲取,返回值是QRgb類型,對于單色和256色圖像,colorTable()返回調色板,numColors返回調色板中的條目數.

用pixelIndex()函數獲取像素的顏色索引,然后使用color()函數取出實際的顏色值.hasAlphaChannel()函數返回圖像是否使用了alpha通道。allGray(),isGrayscale()測試圖像是否為灰度圖像。

文字

text()函數返回圖像附屬的文字,textKeys()返回文字的鍵值表。setText()函數改變圖像附屬文字.

低級信息

depth()函數獲取圖像顏色位數.支持1,8,32位.format().bytesPerLine()和numBytes()函數返回圖像的數據存儲信息. serieralNumber()函數取得唯一標識QImage對象的數字.
----------------------------------

QImage的8位和單色圖像采用顏色索引表的方式存取,32為的圖像則直接存儲ARGB值.因此他們的像素操作函數也不相同,對32位的圖像,setPixel()函數可以改變指定像素的QRgb顏色值,對8位和單色圖像,setPixel()改變在預定義顏色表中的索引值,如果要改變顏色表,可以使用setColor()函數。QImage提供 scanLine()函數返回指定行的數據。bits()函數返回第一個像素的指針。每個像素在QImage中都使用整數形式表示。單色圖像使用一位的索 引指向只有兩種顏色的調色板,有兩種類型的單色圖像,big endia(MSB),little endian(LSB).256色圖像使用8位顏色調色板,調色板的數據類型是QVector,QRgb實際上時無符號整數型,存儲ARGB的格式是 0xAARRGGBB.32位的圖像直接存儲,有三種類型的存儲格式:RGB,ARGB和已預乘的ARGB。在已預乘ARGB中,紅綠藍三色已經和 alpha相乘并模除255.allGray()和isGrayscale()函數可以判斷一個彩色圖像能否安全轉化為灰度圖像。圖像的格式用 format()函數讀取出,convertToFormat()可以進行圖像格式轉化,QImage支持的存儲格式如下:
QImage::Format_Mono??????????? 單色圖像(MSB)
QImage::Format_MonoLSB???????? 單色圖像(LSB)
QImage::Format_Indexed8??????? 使用顏色表的256色圖像
QImage::Format_RGB32?????????? 不支持Alpha通道的32位圖像
QImage::FOrmat_ARGB32????????? 含Alpha通道的32位圖像
QImage::Format_ARGB32_Premultiplied?? 已預乘的含Alpha通道的32位圖像.


總結

以上是生活随笔為你收集整理的QT技术应用_2D绘图(转)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 色99999| 三级视频黄色 | 亚洲青青草 | 在线观看的av | 黄色不雅视频 | 国产亚洲制服欧洲高清一区 | 向着小小的花蕾绽放 | 亚洲av无码国产精品久久不卡 | 人人草网站 | 久久久久久久9999 | 亚洲综合99 | 高清欧美精品xxxxx在线看 | 四虎成人在线观看 | 中午字幕在线观看 | 男女激情视频网站 | 黄色av资源| 福利亚洲 | 久久久久99| 殴美一级片| 麻豆视频免费观看 | 暖暖日本视频 | 在线观看欧美日韩 | 无码人妻黑人中文字幕 | 亚洲咪咪 | 白白色免费视频 | 黄色特级一级片 | 800av免费在线观看 | 中国极品少妇videossexhd 就要干就要操 | 欧美做爰xxxⅹ性欧美大片 | av超碰在线观看 | a级片在线免费观看 | 韩国一二三区 | 佐佐木明希av在线 | 一本色道久久亚洲综合精品蜜桃 | 国产亚洲欧美在线精品 | 亚洲天堂777 | 欧美女优一区二区 | 97公开免费视频 | 欧美一级淫片aaaaaa | 久久女同互慰一区二区三区 | 黄色日本视频 | 伊人青青草视频 | 亚洲二区在线播放视频 | 大香焦久久 | 热99视频 | 亚洲欧美v | 免费在线观看成人 | 少妇自拍视频 | 欧美另类videos | 亚洲 小说区 图片区 | 亚洲1区| 久久99国产精品成人 | 精品无码人妻少妇久久久久久 | 免费在线观看a级片 | 国产人妖ts重口系列网站观看 | 欧美久久久久久久久中文字幕 | 国产精品成人一区二区三区 | 永久免费视频网站直接看 | 色小说综合 | 一区二区欧美在线观看 | 中日韩在线视频 | 情侣av| 久久一级免费视频 | 蜜臀视频在线观看 | 222aaa | 欧美激情久久久久久 | 一本大道久久久久精品嫩草 | 青青操在线 | 打开免费观看视频在线播放 | 福利视频精品 | 日韩成人av网址 | 久久毛片网 | 99久久久国产精品无码性 | 欧美一区二区三区视频在线 | 免费黄色网址在线观看 | 嫩草av久久伊人妇女超级a | 九色视频网站 | 少妇高潮喷水在线观看 | 久久亚洲av无码精品色午夜麻豆 | 亚洲av成人精品毛片 | 日韩1页 | 男生操女生屁股 | 一级久久 | 欧美日韩国产一区 | 国语对白av | 欧美人与禽猛交乱配 | 90岁老太婆乱淫 | 国产男女猛烈无遮挡免费观看网站 | 精品不卡一区 | 美女福利视频导航 | 日韩国产综合 | 欧美乱轮视频 | 久青草免费视频 | 黄色网页免费观看 | 牛牛影视一区二区三区 | 超碰人人艹 | 天天操天天射天天 | 亚洲福利在线视频 | 亚洲AV无码成人精品区在线观 |