亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? canvas.cpp

?? It is very good for learn QT. I think it is very good for you!
?? CPP
字號:
/****************************************************************************
** $Id: qt/canvas.cpp   3.3.1   edited May 27 2003 $
**
** Copyright ( C ) 1992-2001 Trolltech AS.  All rights reserved.
**
** This file is part of an example program for Qt.  This example
** program may be used, distributed and modified without limitation.
**
*****************************************************************************/

#include "canvas.h"

#include <qapplication.h>
#include <qpainter.h>
#include <qevent.h>
#include <qrect.h>

const bool no_writing = FALSE;

Canvas::Canvas( QWidget *parent, const char *name, WFlags fl )
    : QWidget( parent, name, WStaticContents | fl ),
      pen( Qt::red, 3 ), polyline(3),
      mousePressed( FALSE ), oldPressure( 0 ), saveColor( red ),
      buffer( width(), height() )
{

    if ((qApp->argc() > 0) && !buffer.load(qApp->argv()[1]))
	buffer.fill( colorGroup().base() );
    setBackgroundMode( QWidget::PaletteBase );
#ifndef QT_NO_CURSOR
    setCursor( Qt::crossCursor );
#endif
}

void Canvas::save( const QString &filename, const QString &format )
{
    if ( !no_writing )
	buffer.save( filename, format.upper() );
}

void Canvas::clearScreen()
{
    buffer.fill( colorGroup().base() );
    repaint( FALSE );
}

void Canvas::mousePressEvent( QMouseEvent *e )
{
    mousePressed = TRUE;
    polyline[2] = polyline[1] = polyline[0] = e->pos();
}

void Canvas::mouseReleaseEvent( QMouseEvent * )
{
    mousePressed = FALSE;
}

void Canvas::mouseMoveEvent( QMouseEvent *e )
{
    if ( mousePressed ) {
	QPainter painter;
	painter.begin( &buffer );
	painter.setPen( pen );
	polyline[2] = polyline[1];
	polyline[1] = polyline[0];
	polyline[0] = e->pos();
	painter.drawPolyline( polyline );
	painter.end();

	QRect r = polyline.boundingRect();
	r = r.normalize();
	r.setLeft( r.left() - penWidth() );
	r.setTop( r.top() - penWidth() );
	r.setRight( r.right() + penWidth() );
	r.setBottom( r.bottom() + penWidth() );

	bitBlt( this, r.x(), r.y(), &buffer, r.x(), r.y(), r.width(), r.height() );
    }
}

void Canvas::tabletEvent( QTabletEvent *e )
{
    e->accept();
    // change the width based on range of pressure
    if ( e->device() == QTabletEvent::Stylus )	{
	if ( e->pressure() >= 0 && e->pressure() <= 32 )
	    pen.setColor( saveColor.light(175) );
	else if ( e->pressure() > 32 && e->pressure() <= 64 )
	    pen.setColor( saveColor.light(150) );
	else if ( e->pressure() > 64  && e->pressure() <= 96 )
	    pen.setColor( saveColor.light(125) );
	else if ( e->pressure() > 96 && e->pressure() <= 128 )
	    pen.setColor( saveColor );
	else if ( e->pressure() > 128 && e->pressure() <= 160 )
	    pen.setColor( saveColor.dark(150) );
	else if ( e->pressure() > 160 && e->pressure() <= 192 )
	    pen.setColor( saveColor.dark(200) );
	else if ( e->pressure() > 192 && e->pressure() <= 224 )
	    pen.setColor( saveColor.dark(250) );
	else // pressure > 224
	    pen.setColor( saveColor.dark(300) );
    } else if ( e->device() == QTabletEvent::Eraser
		&& pen.color() != backgroundColor() ) {
	pen.setColor( backgroundColor() );
    }

    int xt = e->xTilt();
    int yt = e->yTilt();
    if ( ( xt > -15 && xt < 15 ) && ( yt > -15 && yt < 15 ) )
	pen.setWidth( 3 );
    else if ( ((xt < -15 && xt > -30) || (xt > 15 && xt < 30)) &&
	      ((yt < -15 && yt > -30) || (yt > 15 && yt < 30 )) )
	pen.setWidth( 6 );
    else if ( ((xt < -30 && xt > -45) || (xt > 30 && xt < 45)) &&
	      ((yt < -30 && yt > -45) || (yt > 30 && yt < 45)) )
	pen.setWidth( 9 );
    else if (  (xt < -45 || xt > 45 ) && ( yt < -45 || yt > 45 ) )
	pen.setWidth( 12 );

    switch ( e->type() ) {
    case QEvent::TabletPress:
	mousePressed = TRUE;
	polyline[2] = polyline[1] = polyline[0] = e->pos();
	break;
    case QEvent::TabletRelease:
	mousePressed = FALSE;
	break;
    case QEvent::TabletMove:
	if ( mousePressed ) {
	    QPainter painter;
	    painter.begin( &buffer );
	    painter.setPen( pen );
	    polyline[2] = polyline[1];
	    polyline[1] = polyline[0];
	    polyline[0] = e->pos();
	    painter.drawPolyline( polyline );
	    painter.end();

	    QRect r = polyline.boundingRect();
	    r = r.normalize();
	    r.setLeft( r.left() - penWidth() );
	    r.setTop( r.top() - penWidth() );
	    r.setRight( r.right() + penWidth() );
	    r.setBottom( r.bottom() + penWidth() );

	    bitBlt( this, r.x(), r.y(), &buffer, r.x(), r.y(), r.width(),
		    r.height() );
	}
	break;
    default:
	break;
    }
}

void Canvas::resizeEvent( QResizeEvent *e )
{
    QWidget::resizeEvent( e );

    int w = width() > buffer.width() ?
	    width() : buffer.width();
    int h = height() > buffer.height() ?
	    height() : buffer.height();

    QPixmap tmp( buffer );
    buffer.resize( w, h );
    buffer.fill( colorGroup().base() );
    bitBlt( &buffer, 0, 0, &tmp, 0, 0, tmp.width(), tmp.height() );
}

void Canvas::paintEvent( QPaintEvent *e )
{
    QWidget::paintEvent( e );

    QMemArray<QRect> rects = e->region().rects();
    for ( uint i = 0; i < rects.count(); i++ ) {
	QRect r = rects[(int)i];
	bitBlt( this, r.x(), r.y(), &buffer, r.x(), r.y(), r.width(), r.height() );
    }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲福中文字幕伊人影院| 国产欧美日韩另类一区| 夜夜嗨av一区二区三区四季av| 99国产精品视频免费观看| 国产精品另类一区| 99精品国产视频| 亚洲大片精品永久免费| 日韩精品一区二区在线观看| 国产精品资源在线看| 国产精品二区一区二区aⅴ污介绍| 91视频观看免费| 午夜视频在线观看一区| 日韩写真欧美这视频| 国产精品小仙女| 亚洲免费观看在线观看| 欧美日韩精品一区视频| 久88久久88久久久| 亚洲国产高清在线观看视频| 日本高清不卡在线观看| 日韩经典中文字幕一区| 精品国产乱码久久久久久久| 国产成人鲁色资源国产91色综 | 99精品久久只有精品| 亚洲一区二区三区影院| 日韩欧美一区二区免费| 成人黄页在线观看| 五月激情丁香一区二区三区| 久久久综合网站| 一本一本大道香蕉久在线精品 | 美女视频网站黄色亚洲| 国产亚洲一区二区三区四区| 日本道色综合久久| 激情偷乱视频一区二区三区| 亚洲欧美日韩在线| 欧美成人免费网站| 99re热这里只有精品视频| 久久国产精品无码网站| 亚洲精品五月天| 久久影院午夜论| 欧美色大人视频| 国产成人精品综合在线观看 | 欧美中文字幕不卡| 国产一区二区三区在线看麻豆| 一区二区三区不卡视频| 国产网红主播福利一区二区| 欧美日韩国产首页在线观看| 成人av网站在线| 国产在线精品一区二区| 亚洲1区2区3区视频| 国产精品久久久久久久久快鸭| 91精品婷婷国产综合久久性色| 99久久精品99国产精品| 九九视频精品免费| 五月综合激情网| 亚洲免费观看高清| 国产精品伦理一区二区| 国产日韩欧美a| 欧美成人一区二区三区片免费 | 国产精品99久久久久久似苏梦涵| 亚洲国产欧美另类丝袜| 国产精品久久久99| 精品剧情v国产在线观看在线| 精品视频一区 二区 三区| 99精品热视频| 99久久er热在这里只有精品15 | 欧美变态tickle挠乳网站| 欧洲精品中文字幕| 91麻豆福利精品推荐| 97精品视频在线观看自产线路二| 国产一区二区三区四区五区美女| 日本欧美肥老太交大片| 秋霞国产午夜精品免费视频| 亚洲成人tv网| 天堂一区二区在线| 青青草97国产精品免费观看无弹窗版| 亚洲一区二区视频在线| 亚洲成人免费电影| 午夜欧美在线一二页| 丝袜诱惑制服诱惑色一区在线观看| 亚洲一区免费在线观看| 亚洲无线码一区二区三区| 樱花草国产18久久久久| 亚洲电影第三页| 日韩电影在线免费看| 蜜桃视频在线观看一区二区| 久久99九九99精品| 久久99精品久久久久| 国内精品免费**视频| 国产99久久久国产精品潘金网站| 国产成人在线影院| 成年人国产精品| 欧洲色大大久久| 91麻豆精品国产自产在线观看一区 | 久久精品99国产精品| 久久精品国产亚洲高清剧情介绍 | 国产精品进线69影院| 国产精品第一页第二页第三页| 中文字幕一区二区在线观看| 亚洲欧美日韩久久精品| 亚洲一区二区3| 奇米888四色在线精品| 国产一区二三区好的| 大白屁股一区二区视频| 一本色道久久综合狠狠躁的推荐 | 精品三级在线看| 国产亚洲短视频| 亚洲乱码精品一二三四区日韩在线| 亚洲福利一区二区| 狠狠久久亚洲欧美| 成人精品免费视频| 在线观看中文字幕不卡| 欧美大片一区二区| 日韩毛片一二三区| 老司机免费视频一区二区| 成人天堂资源www在线| 精品视频在线免费观看| 久久久久9999亚洲精品| 一区二区三区中文字幕精品精品 | av一区二区久久| 欧美精品粉嫩高潮一区二区| 久久影音资源网| 亚洲国产一区二区三区| 国产一区二区三区在线看麻豆| 色综合久久综合网97色综合| 日韩一级片在线播放| 中文字幕在线不卡视频| 美女被吸乳得到大胸91| 一本大道av一区二区在线播放| 欧美tk丨vk视频| 亚洲网友自拍偷拍| 成人高清视频免费观看| 欧美一区二区三区电影| 亚洲美腿欧美偷拍| 懂色av一区二区三区蜜臀| 欧美美女一区二区三区| 国产精品第五页| 国产美女娇喘av呻吟久久| 在线综合视频播放| 亚洲一区在线视频| 不卡一区二区三区四区| 精品美女一区二区| 午夜欧美视频在线观看| 色乱码一区二区三区88| 日本一二三不卡| 久久精品久久久精品美女| 欧美日免费三级在线| 成人欧美一区二区三区白人| 国产毛片精品视频| 精品粉嫩超白一线天av| 石原莉奈一区二区三区在线观看| 91在线视频播放| 国产欧美一区二区精品仙草咪| 卡一卡二国产精品 | 国产成人av电影免费在线观看| 91精品国产综合久久精品性色| 亚洲欧美日韩中文字幕一区二区三区 | 色哟哟精品一区| 亚洲少妇中出一区| 成人av网在线| 亚洲国产成人一区二区三区| 韩国av一区二区| 精品少妇一区二区三区视频免付费| 人人狠狠综合久久亚洲| 欧美日产在线观看| 日韩av在线播放中文字幕| 在线不卡免费av| 麻豆精品视频在线观看| 日韩美女天天操| 精品一区二区三区在线观看国产 | 欧美草草影院在线视频| 人禽交欧美网站| 日韩欧美一区电影| 久久不见久久见免费视频1| 欧美xxxxxxxx| 国产一区二区免费视频| 久久精品人人做| www.性欧美| 亚洲乱码国产乱码精品精小说| 欧美亚洲国产bt| 爽好多水快深点欧美视频| 91精品欧美福利在线观看| 日韩av一二三| 久久品道一品道久久精品| 粉嫩一区二区三区在线看| 亚洲少妇最新在线视频| 欧美日韩免费视频| 国内成人自拍视频| 国产日韩视频一区二区三区| 99久久精品国产麻豆演员表| 一区二区三区免费观看| 91精品国产aⅴ一区二区| 久久99久国产精品黄毛片色诱| 久久久久国产精品厨房| 91色porny| 日韩成人一级片| 国产日韩欧美综合一区| 欧美色爱综合网| 国产一区二区成人久久免费影院 | 国产清纯白嫩初高生在线观看91| 91丨九色丨尤物|