Faq глюки timage


Глюк TImage

Нужно чтобы он(TImage) был таких же размеров, как и картинка в нём.

У TImage есть глюк при увеличении размеров в рантайм. Решается заданием максимальных размеров при создании компонента. Может в этом дело?

Winprogrammer, проблемма не совсем ясна. Но все же.

Эт почему они растянуты?? Может свойство Stretch включил?

Нужно, чтобы компонент TImage был таких же размеров, что и картинка внутри.

Цитата(Sunvas @ 9.1.2007, 21:27 )
image1.picture.width image1.picture.height

На форме лежит компонента для изменения размера контрола в RunTime. Пользователь может изменять размеры и положение контрола. Если контрол TImage, то при изменении размера картинка внутри TImage изменяется пропорционально (Proportional:=true), а размер самого контрола остаётся таким, каким его оставил юзер. Мне нужно что бы размер контрола был таким же как и отмасштабированная картинка в нём.

TImage scale как применить

Вопрос

VirusZ2D 6

VirusZ2D 6

  • Продвинутый пользователь
  • Пользователи
  • 6
  • 30 сообщений


Доброго времени суток коллеги суть такова есть TImage в (TFixedMultiResBitmap) добавляю три картинки c пропорциями

scale -1.000 размеры 32×32 картинка 1.png

scale -2.000 размеры 48×48 картинка 2.png

scale -3.000 размеры 54×54 картинка 3.png

как сделать чтоб при изменении размера рисовалась нужная картинка?

Изменено 30 января, 2020 пользователем VirusZ2D

Вопрос про Timage.

jeckp

Я пытаюсь сделать, чтото вроде окна сообщений с дополнительными наворотами. И Хочу, разместить в окне картинку, которая бы изменялась в зависимости от типа окна.
Для этого я использую

Image1: TImage;
ImageList1: TImageList;

В ImageList1 я загонал весь нужный мне набор картинок. Прорисовываю я их с помощью

ImageList1.GetBitmap( N ,Image1.Picture.Bitmap);

Но наступил на грабли. Первая картинка никуда не девается. Все последующие рисуются сверху на первой, в той части, котрая не явлалась фоном для первой.
Я помучился с рефрешами и другими методами — не помогло.
В связи с этим вопросы.

1. Я вообще правильной дорогой иду?
2. Как побороть это явление?
3. Где можно качнуть документацию (на русском ) с описанием методов и свойств всех стандарнтных компонент для Delphi 7?

приложения на Qt начали глючить

Linux Mint 17.2 KDE. Через некоторое время после включения слетает прорисовка. Меню лагает: мерцает, не все элементы прорисовываются, в долфине файлы много раз рисуются на сером фоне. Наблюдается только на приложения которые используют Qt.

Перешел на xfce, ситуация повторилась — все что работает через Qt криво прорисовывается. Пробовал использовать другой драйвер nvidia, менять opengl -> XRender, сносить конфиги в хом, отключать эффекты — всё без результата.

как решить проблему?


Использовать стабильные gtk-приложения, например.

А не замечал, какие именно приложения так себя ведут? На Qt4 или Qt5?

qt4: keepassx skype 4.3 vlc ktorrent kate VirtualBox gui manager стим (если запущен в kde, в xfce норм) на gtk есть не все приложения, в частности скайп, keepass(хотя возможно вторая версия решит проблему) и виртуал бокс

/.kde зачищать пробовали?

пробовал, не помогло. Trolltech.conf также пробовал удалять

Такая же фигня! Skype, Clementine, KTorrent, только я до прочтения этого поста не осознал, что затронуты только Qt-приложения. Началось вчера.

та же самая фигня ubuntu 15.04 @ intel
началось недавно

Обновления Qt были?

Нужен список всех обновившихся пакетов за последнее время.

Проблема была замечена 29 числа(в этот день было только обновление unzip)

Start-Date: 2015-10-07 10:26:07
Upgrade: libspice-server1:amd64 (0.12.4-0nocelt2ubuntu1.1, 0.12.4-0nocelt2ubuntu1.2)

Start-Date: 2015-10-09 10:56:59
Upgrade: libhunspell-1.3-0:amd64 (1.3.2-6ubuntu2, 1.3.2-6ubuntu2.1)

Start-Date: 2015-10-14 00:17:22
Upgrade: libgdk-pixbuf2.0-common:amd64 (2.30.7-0ubuntu1.1, 2.30.7-0ubuntu1.2), gir1.2-gdkpixbuf-2.0:amd64 (2.30.7-0ubuntu1.1, 2.30.7-0ubuntu1.2), libgdk-pixbuf2.0-0:amd64 (2.30.7-0ubuntu1.1, 2.30.7-0ubuntu1.2), libgdk-pixbuf2.0-0:i386 (2.30.7-0ubuntu1.1, 2.30.7-0ubuntu1.2)

Start-Date: 2015-10-16 17:31:02
Install: libssl1.0.2:amd64 (1.0.2d-2+deb.sury.org

trusty+1, automatic)
Upgrade: libssl-dev:amd64 (1.0.1f-1ubuntu2.15, 1.0.2d-2+deb.sury.org

trusty+1), openssl:amd64 (1.0.1f-1ubuntu2.15, 1.0.2d-2+deb.sury.org

Start-Date: 2015-10-18 20:32:08
Upgrade: firefox-locale-en:amd64 (41.0.1+linuxmint1+rafaela, 41.0.2+linuxmint1+rafaela), firefox:amd64 (41.0.1+linuxmint1+rafaela, 41.0.2+linuxmint1+rafaela), firefox-locale-ru:amd64 (41.0.1+linuxmint1+rafaela, 41.0.2+linuxmint1+rafaela)


Start-Date: 2015-10-20 05:45:17
Upgrade: python3-problem-report:amd64 (2.14.1-0ubuntu3.15, 2.14.1-0ubuntu3.16)

Start-Date: 2015-10-20 12:16:01
Upgrade: python3.4:amd64 (3.4.3-1ubuntu1

14.04.3), python-urllib3:amd64 (1.7.1-1ubuntu3, 1.7.1-1ubuntu4), python3.4-minimal:amd64 (3.4.3-1ubuntu1

Илон Маск рекомендует:  Что такое код lseek

14.04.3), libpython3.4-stdlib:amd64 (3.4.3-1ubuntu1

14.04.3), libpython3.4:amd64 (3.4.3-1ubuntu1

14.04.3), libpython3.4-minimal:amd64 (3.4.3-1ubuntu1

Start-Date: 2015-10-20 20:29:02
Upgrade: tzdata-java:amd64 (2015f-0ubuntu0.14.04, 2015g-0ubuntu0.14.04), tzdata:amd64 (2015f-0ubuntu0.14.04, 2015g-0ubuntu0.14.04)

Start-Date: 2015-10-26 20:30:16
Upgrade: mysql-common:amd64 (5.5.44-0ubuntu0.14.04.1, 5.5.46-0ubuntu0.14.04.2), libmysqlclient18:amd64 (5.5.44-0ubuntu0.14.04.1, 5.5.46-0ubuntu0.14.04.2)

Start-Date: 2015-10-27 17:28:29
Upgrade: python3-problem-report:amd64 (2.14.1-0ubuntu3.16, 2.14.1-0ubuntu3.18)

Start-Date: 2015-10-28 00:36:00
Upgrade: ntp:amd64 (4.2.6.p5+dfsg-3ubuntu2.14.04.3, 4.2.6.p5+dfsg-3ubuntu2.14.04.5), ntpdate:amd64 (4.2.6.p5+dfsg-3ubuntu2.14.04.3, 4.2.6.p5+dfsg-3ubuntu2.14.04.5)

Start-Date: 2015-10-28 13:06:52
Install: libsctp1:amd64 (1.0.15+dfsg-1, automatic)
Upgrade: openjdk-7-jre-headless:amd64 (7u79-2.5.6-0ubuntu1.14.04.1, 7u85-2.6.1-5ubuntu0.14.04.1), openjdk-7-jre:amd64 (7u79-2.5.6-0ubuntu1.14.04.1, 7u85-2.6.1-5ubuntu0.14.04.1)

Start-Date: 2015-10-28 23:36:46
Upgrade: libmtp9:amd64 (1.1.6-20-g1b9f164-1ubuntu2, 1.1.6-20-g1b9f164-1ubuntu2.1), libmtp-common:amd64 (1.1.6-20-g1b9f164-1ubuntu2, 1.1.6-20-g1b9f164-1ubuntu2.1), libaudiofile1:i386 (0.3.6-2, 0.3.6-2ubuntu0.14.04.1), libmtp-runtime:amd64 (1.1.6-20-g1b9f164-1ubuntu2, 1.1.6-20-g1b9f164-1ubuntu2.1)

Start-Date: 2015-10-29 20:49:44
Upgrade: unzip:amd64 (6.0-9ubuntu1.3, 6.0-9ubuntu1.4)

JAVA не жрет

после убийства студии кол-во shmem снова начало расти за счет клиент-банка, который тоже на java.
итого, обновление

Start-Date: 2015-10-28 13:06:52
Upgrade: openjdk-7-jre-headless:amd64 (7u79-2.5.6-0ubuntu1.14.04.1, 7u85-2.6.1-5ubuntu0.14.04.1), openjdk-7-jre:amd64 (7u79-2.5.6-0ubuntu1.14.04.1, 7u85-2.6.1-5ubuntu0.14.04.1)

несет проблемы, имхо

похоже на то. Открыл файл в ide — возрасло. Закрыл — возрасло. Запустил поиск — начало рости. За пару минут тыканий с 177 до 2к


Страшнейшие глюки QT4 + DirectX. Сталкивался кто-нибудь?

Глюки просто ОШЕЛОМЛЯЮЩИЕ 8-o

Глючит примерно так:
1) я создаю оконо (MainWindow) и в него DockingWindow
2) делаю своё окно, которое содержит в себе только одно — рендер DirectX во всесь его размер
3) запускаю прогу
4) приходит мелкий и пушистый зверь. писец называется 8-(((
5) ОЧИЩАЮ внеэкранный буфер директ-х
6) даже НИЧЕГО не рисуя делаю Persent ( сегодня перепробовал к нему ВСЕ возможные параметры)
7) в окне рендера появляется. что бы вы думали? ОЧИЩЕННЫЙ внеэкранный буфер, как и положенно, НО. с нарисованным ПОВЕРХ НЕГО куском (куски — всё время разные, но ВСЕ рисуются начиная с левого верхнего угла буфера — один поверх другого) DockingWindow
8) а рядом с окном рендера красуется это самое DockingWindow 8-((((

Когда я это первый рез увидел — я был просто в шоке. через час стало смешно. через два я написал такое приложение под MFC и ещё одно — под Win32. но они НЕ глючили. я на 5 часов залез в доки по QT, но там НИЧЕГО разумного по этому поводу не нашёл. кроме того, что эта дура, видите ли, так же использует аппаратное укорение видео-карты. подозреваю, что в этом и есть проблема.

З/Ы Да, если писать не под ДХ, а под ОпенГЛ (с использованием классов QT, заточенных под это), то никаких глюков и в помине нет.

Помогите. Событие мыши компонента TImage

Поиск на форуме
Расширенный поиск
Найти все хорошие сообщения
К странице.

__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.

__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.

Почему возникает ошибка «Нет такого слота»?

Есть слоты. С ними проблем нет. Добавил по аналогии еще один.

В заголовочном файле в public slots: прописал void UserSettingsSave();
В методе void UserSettings(); прописал:

И не работает. Пишет:

QObject::connect: No such slot MainWindow::UserSettingsSave()
QObject::connect: (sender name: ‘save_button’)
QObject::connect: (receiver name: ‘MainWindow’)

Выше есть аналогичная строка:

Которая прекрасно выполняет свою работу и не вызывает ошибок.


Faq глюки timage

Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда — alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Форум программистов > Delphi > Компоненты Delphi
Кнопка, потомок от TImage
Регистрация
Поиск по форуму
Расширенный поиск
К странице.

Здесь нужно купить рекламу за 25 тыс руб в месяц! ) пишите сюда — alarforum@yandex.ru

Решил создать на основе Timage кнопку с подгружаемыми картинками, но вот что-то глючит(имено в когда кнопка как потомок). Раньше делал графические кнопки используя события мыши над компонентами( MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); ) и всё работало, а когда решил перенести их в компонент неидёт нормально. Может кто поделиться в дополнение к вопросу консультацией как создавать графические компоненты(с упрощёными рабочими примерами, чтобы иметь опуру что делать). Для начало хочу разобраться со своим компонентом, а потом хотелось бы изучить материал(без нагромождений информацией) по созданию вообщем.

Прилагаю наработку(есть коментарии, думаю понятно будет):

ImgBtn.pas — сам компонент; Viz.pas — Собственно для тестирования компонента без установки в палитру.

Вложения

04.01.2008, 00:22 #1
Кнопка из TImage.rar (14.0 Кб, 46 просмотров)

Просмотрел по быстрому, есть кое-какие замечания:
1. В методах SetNorml, SetMove и SetClik не нужно указывать inherited, ведь эти методы не переопределены. Какие у них могут быть «предки»?
2. Переменные X и Y (и вообще любые, которые используются объектами) не стоит делать глобальными. Ведь однотипных объектов может быть несколько, а эти переменные только в одном экземпляре! Вполне возможны ситуации, когда один объект начал «меняться» и читать/менять эти переменные, в этот момент происходит какое-то событие и вызываются методы второго подобного объекта и он тоже начинает менять эти же переменные. Когда управление возвращается первому объекту, то он, ничего не подозревая, продолжает использовать измененные не им значения. Вобщем, или создать дополнительные поля в классе, или объявлять переменные локально (в данном случае это лучше).
3. Поле FActive очень желательно инициализировать в конструкторе — директива Default False не означает, что переменная инициализируется как False, это всего лишь указания о несохранении этого значения в dfm-файле.
4. Возможно Canvas.Font := Fon лучше заменить на Canvas.Assign(Fon). А еще стоит перерисовывать картинку перед выводом надписи, иначе надписи с разными шрифтами станут накладываться друг на друга.
5. Строки в подпрограммы лучше передавать по ссылке, т.е. как const S :String

Это так, навскидку. Реально не я тестировал.

04.01.2008, 02:54 #2

Если есть желание делать на основе картинок тобиш BitMap’оп то лучше сделать два класса, а именно:

04.01.2008, 11:08 #3

04.01.2008, 23:09 #4
05.01.2008, 00:37 #5

А кто вам мешает такое сделать ? Да и вообще нет такого в gdi Jpeg так что полюбому придеться bmp

Qt/C++ — Урок 048. QThread — работа с потоками с помощью moveToThread

В предыдущей статье мы только коснулись работы с потоками , причём в том варианте, который служит больше для кастомизации самого потока, хотя и может быть использован для совершения посторонней работы, никак не связанной непосредственно с потоками. То есть вариант с наследованием от QThread и переопределение метода run() .

Теперь же мы создадим класс ExampleObject, объекты которого будут передаваться в отдельные потоки с помощью метода moveToThread() и выполняться в этих самых потоках. А полезную работу будет совершать слот-метод run(), который будет определён в данном классе. Что важно, класс объектов будет наследован от QObject .

Для того, чтобы работа в методе run() могла выполняться циклично, используем цикл while , управлять которым будем с помощью переменной bool m_running. Для удобства работы с этой переменной определяем её в качестве Q_PROPERTY. Ну а по завершении работы будем испускать сигнал finished() .

Алгоритм работы

А теперь обратимся непосредственно к работе с потоком и объектом. Алгоритм работы будет следующий:

  1. Создаём объект QThread и объект класса ExampleObject;
  2. Подключаем сигнал QThread::started() к методу ExampleObject::run();
  3. Подключаем сигнал ExampleObject::finished() к слоту QThread::terminate(), чтобы по завершении выполнения полезной работы завершить выполнение потока;
  4. Устанавливаем переменную m_running в значение true, чтобы разрешить работу цикла, иначе метод сразу завершится;
  5. Запускаем поток с помощью метода start();
  6. Когда нужно завершить выполнение полезной работы объекта, устанавливаем переменную m_running в значение false. Выполнение метода run() и потока в котором живёт объект завершатся автоматически и корректно.

Структура проекта и внешний вид приложения

  • ThreadLessonTwo.pro — профайл проекта;
  • exampleobject.h — заголовочный файл объекта, который будет передаваться в поток;
  • exampleobject.cpp — файл исходных кодов объекта, который будет передаваться в поток;
  • mainwindow.h — заголовочный файл главного окна приложения;

  • mainwindow.cpp — файл исходных кодов главного окна приложения;
  • mainwindow.ui — файл формы главного окна приложения;
  • main.cpp — файл исходных кодов с функцией main.

В приложении будет определено два объекта и два потока. С помощью интерфейса приложения мы будем задавать некоторую отображаемую в выводе qDebug() информацию, а также будем запускать и останавливать работу потоков.

Процесс создания окна приложения показан в видеоуроке.

exampleobject.h

Для начала рассмотрим содержимое заголовочного файла объекта. В данном файле объявлено три свойства Q_PROPERTY :

  1. running — это переменная, с помощью которой будет осуществляться управление циклом в методе run() и соответственно будет влиять на завершение выполнения полезной работы объекта.
  2. message — это строка, которая будет передаваться для вывода в qDebug() из главного окна приложения
  3. message_2 — это вторая строка, которая также будет отображаться в qDebug(), но при этом будет использоваться и для передачи во второй поток.

Также в заголовочном файле объявлены слот-метод run(), сигнал finished() и переменная int count, которая

exampleobject.cpp

Весь наш интерес сводится к методу run(), в котором в цикле while будет инкрементироваться счётчик count и будет выводиться информация с сообщением m_message, m_message_2 и данным счётчиком до тех пор, пока переменная m_running не будет выставлена в значение false . По выходу из цикла при завершении выполнения метода run() будет выпущен сигнал finished() , по которому завершится поток, в котором будет находиться данный объект.

mainwindow.h

В заголовочном файле главного окна приложения объявлены слоты для обработки нажатий кнопок для записи сообщений в объекты, которые будут выполняться в потоках, а также слоты для запуска и остановки потоков. Помимо этого объявим два объекта класса ExampleObject и два объекта класса QThread.

mainwindow.cpp

А теперь объединим весь предыдущий код в рабочее приложение в исходном коде главного окна приложения. В конструкторе данного класса, как уже было сказано в самом начале, необходимо подключить сигналы started() потоков к слотам run() наших тестовых объектов, а сигналы finished(), к слотам потоков terminate(), чтобы завершать работу потоков при завершении выполнения метода run().

Также присоединим сигнал посылки сообщения объекта exampleObject_1 к слоту установки сообщения exampleObject_2. Но чтобы информация могла передаваться, нужно пятым аргументом в метод connect передать флаг Qt::DirectConnection , который установит непосредственное соединение объектов и позволит выполнять передачу информации через систему сигналов и слотов .


Ну и для передачи объектов в потоки необходимо воспользоваться методом moveToTrhead().

Вывод

В результате работы приложения можно получить ниже следующий вывод qDebug() , который демонстрирует параллельную работу объектов в потоках, а также передачу информации из одного потока в другой.

Скачать проект можно по следующей ссылке: Thread Lesson Two

Лечим некоторые глюки xfce (xubuntu) которые мешают нормально работать

Может к ним беттатестером записаться? Хотя похоже, что там лучше сразу в разработчики идти и баги править. Но это так сказать лирика, а сейчас рассмотрим один из методов починить глюкодром с треем.

Итак собственно в чем проблема. Выглядит это следующим образом, иконка ktorrent в tray не отображается, а у Qt и KDE приложений свернутых в трей перепутаны клавиши (левая и правая кнопки мыши) для управления и полностью не отображаются высокие меню.

Путем экспериментов были разработаны костыли которые позволяют решить данную проблему.

1. Обновите версию xfce.

Для обновления с версии 4.10 (по умолчанию в Ubuntu 14.04 LTS) до 4.12 выполните следующие команды:

# add-apt-repository ppa:xubuntu-dev/xfce-4.12
# sudo apt-get update
# sudo apt-get dist-upgrade

Для применения настроек необходимо выполнить выход из системы и вход заново, если система многопользовательская данную операцию необходимо повторить для всех авторизованных на данный момент пользователей или перезагружить рабочую станцию.

Проверить текущую версию xfce можно командой (от имени пользователя):

Если обновление прошло успешно, вы получите:

xfce4-session 4.12.1 (Xfce 4.12)

После обновления у вас может отвалиться переключение раскладки клавиатуры для устранения просто откройте настройки переключения раскладки и закройте их. После пересохранения переключение раскладки будет работать нормально.

Так же возможно у вас уплывет тема KDE и Qt приложений. Для исправления этой ошибки установите qtconfig командой:

# aptitude install qt4-qtconfig

От имени пользователя выполните команду:

И выберите подходящую тему оформления, например CleanLook.

Для запуска Qt-приложений с нормальным треем установите следующие пакеты поддержки службы сообщений:

# aptitude install notify-osd mate-notification-daemon

после установки этих пакетов вы активируете поддержку различных средств оповещений.

Но это еще не все. Проблема с треем еще не решена, чтобы заставить Qt и KDE приложения использовать штатный трей вместо системы оповещений XFCE их необходимо запускать с параметрами:

env -i HOME=$HOME DISPLAY=$DISPLAY skype

Еще есть одна деталь. Если вы прописываете Qt-приложения в автозапуск и они сворачиваются в трэй, то добавьте задержку в 10-15 секунд.

В общем виде я просто переименовал skype в skype.bin и сделал скрипт запуска (вместо штатного skype):

#!/bin/sh
env -i HOME=$HOME DISPLAY=$DISPLAY skype &

И для автозапуска скрипт с задержкой (skype.sleep):

#!/bin/sh
sleep 10
env -i HOME=$HOME DISPLAY=$DISPLAY skype &

Собственно вот таким набором костылей это и решается. Когда починят штатно не понятно.

Илон Маск рекомендует:  Что такое код socket_recv
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL
05.01.2008, 10:35 #6