crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> наложение слоя поверх изображения в QPixmap
call_me_Frank
  опции профиля:
сообщение 8.4.2015, 16:51
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 73
Регистрация: 20.10.2010
Пользователь №: 2129

Спасибо сказали: 0 раз(а)




Репутация:   0  


Всем привет!

Кто знает, как можно сделать "выделение" для QPixmap?


выделение - это, например, непрозрачная рамка и полупрозрачный фон (см. картинки)

+ еще вопрос, как сделать размытие (blur) содержимого QPixmap? полагаю, что это вопросы схожего порядка.

Сообщение отредактировал call_me_Frank - 8.4.2015, 17:29
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
call_me_Frank
  опции профиля:
сообщение 8.4.2015, 17:56
Сообщение #2


Студент
*

Группа: Участник
Сообщений: 73
Регистрация: 20.10.2010
Пользователь №: 2129

Спасибо сказали: 0 раз(а)




Репутация:   0  


На вскидку получается вот что (this - объект QWidget):

    QPixmap pixmap(this->size());
    this->render(&pixmap, QPoint(), QRegion(this->rect()));
    QPainter ptr(&pixmap);

    QRect border(0,0,this->width() - 1, this->height() - 1);
    ptr.setBrush(QBrush(QColor(0,0,255,125)));
    ptr.drawRect(border);

    ptr.setBrush(QBrush());
    ptr.setPen(QPen(Qt::red));
    ptr.drawRect(border);

    pixmap.save("widget.png", 0, 100);


Что-то можно исправить/оптимизировать?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
wiz29
  опции профиля:
сообщение 10.4.2015, 11:32
Сообщение #3


Старейший участник
****

Группа: Участник
Сообщений: 600
Регистрация: 7.7.2010
Из: Санкт-Петербург
Пользователь №: 1866

Спасибо сказали: 94 раз(а)




Репутация:   12  


Цитата(call_me_Frank @ 8.4.2015, 16:51) *
как сделать размытие (blur) содержимого QPixmap?


можно воспользоваться QGraphicsBlurEffect, либо написать самому blur фильтр для QImage.

Цитата(call_me_Frank @ 8.4.2015, 17:56) *
Что-то можно исправить/оптимизировать?

Не совсем понятно зачем дважды вызывать drawRect, когда можно то же самое сделать с помощью 1 вызова drawRect.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
call_me_Frank
  опции профиля:
сообщение 13.4.2015, 13:41
Сообщение #4


Студент
*

Группа: Участник
Сообщений: 73
Регистрация: 20.10.2010
Пользователь №: 2129

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(wiz29 @ 10.4.2015, 11:32) *
Не совсем понятно зачем дважды вызывать drawRect, когда можно то же самое сделать с помощью 1 вызова drawRect.


да, действительно )) я просто не художник, с кистями и карандашами работаю мало.

Сообщение отредактировал call_me_Frank - 13.4.2015, 13:41
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 28.1.2022, 23:05