Qt 制作透明背景圖片與裁剪圖片(很實用)


這兩天想做一個五子棋游戲,想從零開始自己繪制各種圖片素材,將經驗心得整理如下。

制作透明背景圖片:

void MyPainter::DrawKit()
{
    QImage image(30, 30, QImage::Format_ARGB32); memset(image.bits(), 0x00, image.byteCount()); // 繪制圖片 QPainter painter(&image); painter.setPen(QPen(Qt::red, 2, Qt::SolidLine)); painter.translate(15, 15); painter.drawLine(0-15, 0-15, 0-8, 0-15); painter.drawLine(0+15, 0-15, 0+8, 0-15); painter.drawLine(0-15, 0+15, 0-8, 0+15); painter.drawLine(0+15, 0+15, 0+8, 0+15); painter.drawLine(0-15, 0-15, 0-15, 0-8); painter.drawLine(0+15, 0-15, 0+15, 0-8); painter.drawLine(0-15, 0+15, 0-15, 0+8); painter.drawLine(0+15, 0+15, 0+15, 0+8); qDebug() << image.save("C:/Users/Mactarvish/Desktop/test2.png", "PNG"); }

首先創建一個顏色模式為ARGB32的QImage對象。創建完成后不要直接繪圖,否則會在圖片上產生由內存中的辣雞數據引入的花點。解決方法是將QImage的RAW data 全部重寫為0x00。

重寫后再繪圖,就是一張除了畫出來的圖形之外其他的區域全是透明的的圖片了,最后執行save函數保存。

對圖片的裁剪更為簡單,直接調用QImage::copy()函數創建裁剪后的對象即可。

void MyPainter::CropImage()
{
    QImage image("C:/Users/Mactarvish/Desktop/myPicture_v1.png"); QImage newImage = image.copy(90, 90, image.width()-90, image.height()-90); qDebug() << newImage.save("C:/Users/Mactarvish/Desktop/CropedImage.png"); }
 

http://blog.csdn.net/qq_19672579/article/details/51050367

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM