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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Щели между прямоугольниками  (Прочитано 3402 раз)
Daniel
Гость
« : Июнь 24, 2011, 21:21 »

В общем, получается такая картина:


Это заполнено одинаковыми прямоугольниками разной прозрачности. А хотелось бы, чтобы не было щелей, посоветуйте что-то, пожалуйста Улыбающийся
Значения координат и размеров во float, но все равно при масштабировании вот такая фигня Грустный Есть ли рецепт?
Записан
ecspertiza
Супер
******
Offline Offline

Сообщений: 1053


С уважением, мастер конфетного цеха!


Просмотр профиля
« Ответ #1 : Июнь 24, 2011, 21:32 »

советую выложить код рисования сюда))) ибо что то в нем не так ))))
Записан
Daniel
Гость
« Ответ #2 : Июнь 24, 2011, 21:42 »

Значит что происходит при изменении размера окна:
Код:
void Graphics::RecalcSizes()
{
//взяли текущие параметры шир.-выс.
    gr_width = this->width(); 
    gr_height = this->height();
//посчитали единичные размеры
    x_size = gr_width / (_MI - 2);
    y_size = gr_height / (_MK - 2);
}
Теперь сам код рисования:
Код:
//получили значение в точке, согласно чему выставили прозрачность цвету и рисуем
for (int j = 0; j < _MK - 2; j++)
        for (int i = 0; i < _MI - 2; i++)
        {
                float alpha = a[i + 2][currentFi][j + 2];

                QColor col = QColor::fromRgba(fillColor);
                col.setAlpha(255 * alpha);
                painter.setBrush(col);
                painter.setPen(Qt::transparent); //можете предложить тут поставить тоже col, но тогда будут щели с цветом
                painter.drawRect(i * x_size, gr_height - (j + 1) * y_size, x_size, y_size);
                painter.setPen(Qt::black);
        }   
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #3 : Июнь 24, 2011, 22:43 »

Цитировать
painter.setPen(Qt::transparent);
либо
Код
C++ (Qt)
painter.setPen(Qt::NoPen);
либо
Код
C++ (Qt)
painter.fillRect();
если не поможет, то попробуй
Код
C++ (Qt)
QPen::setCosmetic( true );
Записан

Qt 5.11/4.8.7 (X11/Win)
Daniel
Гость
« Ответ #4 : Июнь 24, 2011, 23:13 »

GreatSnake, спасибо за советы, к сожалению не помогли, НО я придумал как: при вычислении x_size, y_size, я их округлил - все стало отлично!
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #5 : Июнь 25, 2011, 11:42 »

GreatSnake, спасибо за советы, к сожалению не помогли, НО я придумал как: при вычислении x_size, y_size, я их округлил - все стало отлично!
Хм, а они (x_size, y_size) разве не qreal  Непонимающий
Записан

Qt 5.11/4.8.7 (X11/Win)
Daniel
Гость
« Ответ #6 : Июнь 26, 2011, 14:01 »

Хм, а они (x_size, y_size) разве не qreal  Непонимающий
У меня - float  Строит глазки
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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