พฤศจิกายน 17, 2018, 12:38:45 pm *
ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน
ส่งอีเมล์ยืนยันการใช้งาน?

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น
   หน้าแรก   ช่วยเหลือ เข้าสู่ระบบ สมัครสมาชิก  
หน้า: [1]   ลงล่าง
  พิมพ์  
ผู้เขียน หัวข้อ: Qt : QLinearGradient  (อ่าน 1229 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
ShadowMan
Administrator
Hero Member
*****
ออฟไลน์ ออฟไลน์

เพศ: ชาย
กระทู้: 8272


ShadowWares


| |
« เมื่อ: มิถุนายน 06, 2015, 12:41:34 pm »

Qt : QLinearGradient

ดูผลกันก่อน


ภาพด้านบน ได้มาจาก code ต่อไปนี้:
Code: (c)
#include <QApplication>
#include <QGraphicsScene>
#include <QGraphicsView>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    int draw_w = 500;
    int draw_h = 200;

    // Draw Board
    QPixmap   pix(draw_w, draw_h);
    QPainter *paint = new QPainter(&pix);

    // Gradient Brush
    QLinearGradient gradient(QPointF(0,0), QPointF(0,draw_h));
    gradient.setColorAt(0.0,QColor::fromRgbF(1,0,0,1));
    gradient.setColorAt(0.3,QColor::fromRgbF(1,1,0,1));
    gradient.setColorAt(0.7,QColor::fromRgbF(0,1,1,1));
    gradient.setColorAt(1.0,QColor::fromRgbF(0,0,1,1));
    QBrush brush(gradient);

    // Paint on the Draw Board with the Gradient Brush
    paint->fillRect(0, 0, draw_w, draw_h, brush);

    // Create a Scene and add the Pixmap to the Scene
    QGraphicsScene *scene = new QGraphicsScene();
    scene->addPixmap(pix);

    // Create a View and add the Scene to the View
    QGraphicsView * view = new QGraphicsView();
    view->setScene(scene);
    view->setWindowTitle("QLinearGradient");
    view->show();

    return a.exec();
    delete view;
}



ส่วนของการสร้าง Gradient Brush คือ:
Code: (c)
    QLinearGradient gradient(QPointF(0,0), QPointF(0,draw_h));
    gradient.setColorAt(0.0,QColor::fromRgbF(1,0,0,1));
    gradient.setColorAt(0.3,QColor::fromRgbF(1,1,0,1));
    gradient.setColorAt(0.7,QColor::fromRgbF(0,1,1,1));
    gradient.setColorAt(1.0,QColor::fromRgbF(0,0,1,1));
    QBrush brush(gradient);


บรรทัดแรก เป็นการสร้างตัวแปร gradient โดยกำหนดจุดเริ่มต้นที่ (0,0) หรือซ้ายบน และจุดสุดท้ายที่ ซ้ายล่าง (0, draw_h) ความหมายคือกำหนดทิศทางของการไล่เฉดจากบนลงล่างนั่นเอง
สี่บรรทัดต่อมา เป็นการระบุตำแหน่งของสี (0.0, 0.3, 0.7, 1.0) และสีที่ต้องการ (แดง,เหลือง,ฟ้า,น้ำเงิน)  ตามลำดับ
ความหมายคือ:
สีแดงจะเข้มสุดที่ตำแหน่ง 0% (0.0) ของความสูง (บนสุด)
สีเหลืองจะเข้่มสุดที่ 30% (0.3) ของความสูง
สีฟ้าจะเข็มสุดที่ 70% (0.7)ของความสูง และสุดท้าย
สีน้ำเงินจะเข้มสุดที่ตำแหน่ง 100% (1.0) ของตวามสูง (ล่างสุด)

และบรรทัดสุดท้ายคือการสร้าง Brush


ทดลองเปลี่ยนทิศทางการไล่เฉดจากซ้ายไปขวา โดย:
Code: (c)
QLinearGradient gradient(QPointF(0,0), QPointF(0,draw_h));

เป็น
Code: (c)
QLinearGradient gradient(QPointF(0,0), QPointF(draw_w,0));


จะได้:

บันทึกการเข้า

By SDW: Do No Wrong Is Do Nothing
          If you want to increase your success rate, double your failure rate
หน้า: [1]   ขึ้นบน
  พิมพ์  
 
กระโดดไป: