crossplatform.ru

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

8 страниц V  « < 6 7 8  
Ответить в данную темуНачать новую тему
> Как рисовать из объекта QImage по окружности?
lanz
  опции профиля:
сообщение 11.3.2013, 9:22
Сообщение #71


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

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

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




Репутация:   8  


Скорее всего this->MyRadianToGradus(phi) становится больше 360.
Вообще интересно скриншот посмотреть.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
zuze
  опции профиля:
сообщение 11.3.2013, 10:11
Сообщение #72


Участник
**

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

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




Репутация:   0  


В принципе задача решена.

Цитата(lanz @ 11.3.2013, 9:22) *
Скорее всего this->MyRadianToGradus(phi) становится больше 360.


Изменил так и это заработало:

QBrush brush_im1(im1);
QBrush brush_im2(im2);
QTransform tr;
tr.translate (-492, -492);
brush_im1.setTransform (tr);
brush_im2.setTransform(tr);

Tochka.translate(542, 512);
Tochka.rotate(-90);

QRect rectangle(-492, -492, 984, 984);
Tochka.setBrush(brush_im2);
Tochka.drawPie(rectangle, 0, -static_cast<int>(this->MyRadianToGradus(phi)+0.5)*16);

Tochka.setBrush(brush_im1);
Tochka.drawPie(rectangle, -static_cast<int>(this->MyRadianToGradus(phi)+0.5)*16, static_cast<int>((this->MyRadianToGradus(phi)+0.5) - 360)*16);


Единственное, что плохо, что линия которая рисуеться также по кругу почему-то после первого рисунка, когда рисуется первый и второй рисунок скорость вращения линии падает. В добавок, когда линия доходит до 360 градусов линия не надолго притормаживает.

Сообщение отредактировал zuze - 11.3.2013, 10:13
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
lanz
  опции профиля:
сообщение 11.3.2013, 14:40
Сообщение #73


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

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

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




Репутация:   8  


Можно попробовать картинку готовить не в Format_ARGB32, а Format_ARGB32_Premultiplied.
Торможение скорей всего из-за подготовки следующей картинки. Если их немного, можно заранее подготовить.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
zuze
  опции профиля:
сообщение 11.3.2013, 15:00
Сообщение #74


Участник
**

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

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




Репутация:   0  


Цитата(lanz @ 11.3.2013, 14:40) *
Торможение скорей всего из-за подготовки следующей картинки.


if (static_cast<int>((this->MyRadianToGradus(phi)+0.5)) < 360)
   phi += this->MyGradusToRadian(6.0);
else
  phi = 0.0;


Скажите пожалуйста, если линия когда доходит до 360 градусов, претормаживает, это может быть в следствии вот этого части кода?

...
...
else
  phi = 0.0;


Если да, то как правильно переделать код?

Сообщение отредактировал zuze - 11.3.2013, 15:01
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
lanz
  опции профиля:
сообщение 12.3.2013, 8:22
Сообщение #75


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

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

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




Репутация:   8  


Попробуйте заранее подготовить несколько картинок, например в массиве.
Если торможение пропадет, значит дело в подготовке картинки, если останется, в чем то другом.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

8 страниц V  « < 6 7 8
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


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




RSS Текстовая версия Сейчас: 28.3.2024, 12:31