Russian Qt Forum
Май 29, 2024, 13:18 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: ::bitBlt  (Прочитано 6596 раз)
thomas68
Гость
« : Апрель 20, 2009, 13:45 »


как реализовать на QT4



void Mpaint::paintEvent(QPaintEvent* ){
    ::bitBlt(this,0,0,&m_pix);
  ^^^^^^^^^^^^^^^^^
}
Записан
Rcus
Гость
« Ответ #1 : Апрель 20, 2009, 14:58 »

http://doc.trolltech.com/4.5/porting4.html#qpaintdevice
Записан
thomas68
Гость
« Ответ #2 : Апрель 20, 2009, 15:35 »


мнебы примерчик как начинающему ....
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #3 : Апрель 20, 2009, 15:48 »

как реализовать на QT4

Код
C++ (Qt)
void Mpaint::paintEvent(QPaintEvent* ){
   QPainter p(this);
   p.drawPixmap(0, 0, m_pix);
}
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
thomas68
Гость
« Ответ #4 : Апрель 20, 2009, 17:53 »

как реализовать на QT4

Код
C++ (Qt)
void Mpaint::paintEvent(QPaintEvent* ){
   QPainter p(this);
   p.drawPixmap(0, 0, m_pix);
}

да но только эта конструкция не работает в обратную сторону

::bitBlt (&m_pix,0,0,this);
Записан
Rcus
Гость
« Ответ #5 : Апрель 20, 2009, 17:59 »

QPixmap QPixmap::grabWidget ( QWidget * widget, const QRect & rectangle )   [static]
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #6 : Апрель 20, 2009, 18:17 »

QWidget::render(...)
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
thomas68
Гость
« Ответ #7 : Апрель 20, 2009, 18:34 »

QWidget::render(...)

а куда его вставлять ,,, Непонимающий

/*virtual*/void MousePaint::mouseMoveEvent(QMouseEvent* pe)
{
    QPainter painter;

    painter.begin(this);
    painter.drawLine(m_pt, pe->pos());
    m_pt = QPoint(pe->pos());
    painter.end();
      ::bitBlt(&m_pix, 0, 0, this);
}
Записан
thomas68
Гость
« Ответ #8 : Апрель 20, 2009, 18:58 »

QWidget::render(...)

Короче вот полный код из оригинала

/* ======================================================================
**  MousePaint.h
** ======================================================================
**
*/

#ifndef _MousePaint_h_
#define _MousePaint_h_

#include <qwidget.h>
#include <qpoint.h>
#include <qpixmap.h>

// ======================================================================
class MousePaint : public QWidget {
    Q_OBJECT
private:
    QPoint  m_pt;
    QPixmap m_pix;

protected:
    virtual void paintEvent     (QPaintEvent* pe);
    virtual void mousePressEvent(QMouseEvent* pe);
    virtual void mouseMoveEvent (QMouseEvent* pe);

public:
    MousePaint(QWidget* pwgt = 0);
};

#endif  //_MousePaint_h_


/////////////////////////////////////////////////////////////////////////
/* ======================================================================
**  MousePaint.cpp
** ======================================================================
**
*/
#include <QMouseEvent>
#include <qpainter.h>
#include "MousePaint.h"

// ----------------------------------------------------------------------
MousePaint::MousePaint(QWidget* pwgt/*= 0*/)
    : QWidget(pwgt)
{
    m_pix.scaled(width(), height());
    m_pix.fill(Qt::white);
}

// ----------------------------------------------------------------------
/*virtual*/void MousePaint::paintEvent(QPaintEvent*)
{
   ::bitBlt(this, 0, 0, &m_pix);
}

// ----------------------------------------------------------------------
/*virtual*/void MousePaint::mousePressEvent(QMouseEvent* pe)
{
    if (pe->button() & Qt::RightButton) {
        m_pix.fill(Qt::white);
        repaint();
    }
    else {
        QPainter painter;

        painter.begin(this);
        painter.drawPoint(pe->pos());
        m_pt = QPoint(pe->pos());
        painter.end();

        ::bitBlt(&m_pix, 0, 0, this);
    }
}

// ----------------------------------------------------------------------
/*virtual*/void MousePaint::mouseMoveEvent(QMouseEvent* pe)
{
    QPainter painter;

    painter.begin(this);
    painter.drawLine(m_pt, pe->pos());
    m_pt = QPoint(pe->pos());
    painter.end();
    ::bitBlt(&m_pix, 0, 0, this);
}









Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #9 : Апрель 20, 2009, 20:18 »

Код
C++ (Qt)
/*virtual*/void MousePaint::mousePressEvent(QMouseEvent* pe)
{
   if (pe->button() & Qt::RightButton) {
       m_pix.fill(Qt::white);
       repaint();
   }
   else {
       QPainter painter(&m_pix);
       painter.drawPoint(pe->pos());
       m_pt = QPoint(pe->pos());
       update();
   }
}
 
void MousePaint::paintEvent(QPaintEvent* ){
   QPainter p(this);
   p.drawPixmap(0, 0, m_pix);
}
 
/*virtual*/void MousePaint::mouseMoveEvent(QMouseEvent* pe)
{
   QPainter painter(&m_pix);
   painter.drawLine(m_pt, pe->pos());
   m_pt = QPoint(pe->pos());
   update();
}
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
thomas68
Гость
« Ответ #10 : Апрель 20, 2009, 22:20 »

Код
C++ (Qt)
/*virtual*/void MousePaint::mousePressEvent(QMouseEvent* pe)
{
   if (pe->button() & Qt::RightButton) {
       m_pix.fill(Qt::white);
       repaint();
   }
   else {
       QPainter painter(&m_pix);
       painter.drawPoint(pe->pos());
       m_pt = QPoint(pe->pos());
       update();
   }
}
 
void MousePaint::paintEvent(QPaintEvent* ){
   QPainter p(this);
   p.drawPixmap(0, 0, m_pix);
}
 
/*virtual*/void MousePaint::mouseMoveEvent(QMouseEvent* pe)
{
   QPainter painter(&m_pix);
   painter.drawLine(m_pt, pe->pos());
   m_pt = QPoint(pe->pos());
   update();
}

спасибо большое за пример , теперь компилируется но на экране ничего .... Плачущий



Записан
thomas68
Гость
« Ответ #11 : Апрель 20, 2009, 23:06 »

А другого варианта больше нет.
Этот у меня нерисует !! Грустный
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #12 : Апрель 20, 2009, 23:11 »

Попробуй измени конструктор:

Код
C++ (Qt)
MousePaint::MousePaint(QWidget* pwgt/*= 0*/)
   : QWidget(pwgt)
{
   m_pix = QPixmap(width(), height());
   m_pix.fill(Qt::white);
}
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.133 секунд. Запросов: 19.