zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    poj 2528 Mayor's posters (线段树+离散化)
    poj 1201 Intervals (差分约束)
    hdu 4109 Instrction Arrangement (差分约束)
    poj 1195 Mobile phones (二维 树状数组)
    poj 2983 Is the Information Reliable? (差分约束)
    树状数组 讲解
    poj 2828 Buy Tickets (线段树)
    hdu 1166 敌兵布阵 (树状数组)
    Ubuntu网络配置
    Button控制窗体变量(开关控制灯的状态)
  • 原文地址:https://www.cnblogs.com/findumars/p/7220059.html
Copyright © 2011-2022 走看看