Название: QPainter::drawPixmap - похоже конкретный Баг? Отправлено: spectre71 от Декабрь 09, 2009, 11:51 Код
Последняя отрисовка должна дать квадрат - RED 2*10 + GREEN 8*10. Однако это правильно работает при debug сборке. При release сборке мы получаем квадрат - RED 10*10 Windows XP Qt 4.6 Qt Creator 1.3.0 mingw qcc Название: Re: QPainter::drawPixmap - похоже конкретный Баг? Отправлено: Rcus от Декабрь 09, 2009, 12:26 Что-то у меня парсер не переваривает painter и *pixmap. И все равно использовать QPixmap на котором активен QPainter в качестве источника нельзя, плохо что Q_ASSERT'а на это нет.
Название: Re: QPainter::drawPixmap - похоже конкретный Баг? Отправлено: spectre71 от Декабрь 09, 2009, 12:29 Что-то у меня парсер не переваривает painter и *pixmap. И все равно использовать QPixmap на котором активен QPainter в качестве источника нельзя, плохо что Q_ASSERT'а на это нет. Код
Почему нельзя? В доке это где-то есть? Название: Re: QPainter::drawPixmap - похоже конкретный Баг? Отправлено: Igors от Декабрь 09, 2009, 13:24 Я так понял 2 painter'а (Painter и painter). Первый рисует в pixmap, второй ее выводит. Если так то интересно проверить:
Код
Название: Re: QPainter::drawPixmap - похоже конкретный Баг? Отправлено: spectre71 от Декабрь 09, 2009, 13:39 Я так понял 2 painter'а (Painter и painter). Первый рисует в pixmap, второй ее выводит. Если так то интересно проверить: Нет паинтер один! (в первом примере была ошибка (Painter, painter) - во втором я ее исправил)И девайс на котором рисуем и источник один и тот же Pixmap. Задача которая решается - пермещение участка Pixmap внутри него. Название: Re: QPainter::drawPixmap - похоже конкретный Баг? Отправлено: spectre71 от Декабрь 11, 2009, 05:01 Ну что, так это Qt-ный баг?
Есть не согласные? Название: Re: QPainter::drawPixmap - похоже конкретный Баг? Отправлено: Rcus от Декабрь 11, 2009, 06:07 Не согласен, фигню хотите - копируйте участок и накладывайте после.
Название: Re: QPainter::drawPixmap - похоже конкретный Баг? Отправлено: Igors от Декабрь 11, 2009, 06:38 Код А вот последняя строка непонятно что делает. Если цель - сдвиг/скролл, то QRect должны быть равны по размерам. И что куда копируется? Получается: взяли квадрат (без правой линии), и вписали его в прямоугольник на 1 пиксель меньше? Какой-то мутный сдвиг:) Название: Re: QPainter::drawPixmap - похоже конкретный Баг? Отправлено: spectre71 от Декабрь 11, 2009, 06:44 Не согласен, фигню хотите - копируйте участок и накладывайте после. Очень не оптимально: - участок может быть очень большой - дополнительное выделение памяти - гораздо медленние Так что это не фигня, особенно в случае частого повторения данной операции! Название: Re: QPainter::drawPixmap - похоже конкретный Баг? Отправлено: spectre71 от Декабрь 11, 2009, 06:48 Painter.drawPixmap(QRect(1,0,9,10), *Pixmap, QRect(0,0,9,10)); // ??? Смотри внимательнее они и равны по размерам 9x10 - QRect(1,0,9,10), QRect(0,0,9,10)А вот последняя строка непонятно что делает. Если цель - сдвиг/скролл, то QRect должны быть равны по размерам. И что куда копируется? Получается: взяли квадрат (без правой линии), и вписали его в прямоугольник на 1 пиксель меньше? Какой-то мутный сдвиг:) Название: Re: QPainter::drawPixmap - похоже конкретный Баг? Отправлено: Igors от Декабрь 11, 2009, 07:25 Попутал (привык left, top, right, bottom :)) Но на Mac такого нет, слева 2 красных пикселя (как в debug, так и в release). На всякий случай вот полный текст.
Код: void Widget::paintEvent ( QPaintEvent * ) Название: Re: QPainter::drawPixmap - похоже конкретный Баг? Отправлено: spectre71 от Декабрь 11, 2009, 07:40 Попутал (привык left, top, right, bottom :)) Но на Mac такого нет, слева 2 красных пикселя (как в debug, так и в release). На всякий случай вот полный текст. Код: ... Вполне возможно. Проявление данной ошибки может зависить от компилятора, оптимимизации, ... Это ошибка подобная той которая получается при копирование области памяти в случае пересечения диапазонов если использовать memcpu вместо memmove. |