Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > ОС и железо
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #91  
Старый 09.12.2012, 23:02
Аватар для sariman
sariman sariman вне форума
Активный
 
Регистрация: 19.11.2011
Адрес: Украина, Луганская обл.
Сообщения: 244
Версия Delphi: 7, XE, Lazarus
Репутация: выкл
По умолчанию

Не дали вы точный ответ как рисованием на битмапе избежать мерцания объектов на форме.
Ответить с цитированием
  #92  
Старый 09.12.2012, 23:04
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Дал, читай внимательно.
Когда рисуешь на форме может придти сообщение WM_PAINT и всё моргнуло. При рисовании на битмапе и разовом выводе уже готового изображения такого не происходит.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #93  
Старый 09.12.2012, 23:19
Аватар для sariman
sariman sariman вне форума
Активный
 
Регистрация: 19.11.2011
Адрес: Украина, Луганская обл.
Сообщения: 244
Версия Delphi: 7, XE, Lazarus
Репутация: выкл
По умолчанию

Цитата:
Сообщение от angvelem
Вот я и привел пример, затем копируешь битмап на форму.
Код:
function WndProc(Wnd : HWND; Msg : Integer; wParam, lParam : Longint): Integer; stdcall;
var
  ps    : PAINTSTRUCT;
...
  WM_PAINT :
  begin
    BeginPaint(Wnd, ps);
    BitBlt(ps.hdc, 0, 0, Bmp.Width, Bmp.Height, Bmp.Canvas.Handle, 0, 0, Bmp.Width, Bmp.Height, SRCCOPY);
    EndPaint(Wnd, ps);
  end;
Что в данном случае Bmp? Его как-то нужно объявлять или что?
Ответить с цитированием
  #94  
Старый 09.12.2012, 23:26
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Мне казалось это и так понятно
Код:
var
  Bmp : TBitmap;
...
  WM_CREATE :
  begin
    Bmp := TBitmap.Create;
    Bmp.LoadFromFile('MyImage.bmp');
...
  end;
...
Переменная Bmp - глобальная.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #95  
Старый 09.12.2012, 23:27
Аватар для sariman
sariman sariman вне форума
Активный
 
Регистрация: 19.11.2011
Адрес: Украина, Луганская обл.
Сообщения: 244
Версия Delphi: 7, XE, Lazarus
Репутация: выкл
По умолчанию

Хм..а какое отношение имеет картинка к объектам?
Ответить с цитированием
  #96  
Старый 09.12.2012, 23:33
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Это лишь пример, ты же можешь полностью сделать свою отрисовку, в том числе кнопки, списки и что в голову придёт.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #97  
Старый 09.12.2012, 23:34
Аватар для sariman
sariman sariman вне форума
Активный
 
Регистрация: 19.11.2011
Адрес: Украина, Луганская обл.
Сообщения: 244
Версия Delphi: 7, XE, Lazarus
Репутация: выкл
По умолчанию

Оу..не хочу так сильно париться, как добиться двойной буферизации?
Ответить с цитированием
  #98  
Старый 09.12.2012, 23:40
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Без битмапа никак. Зачем тебе двойная буферизация, раз у тебя нет графической отрисовки? И так ничего мерцать не будет.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.

Последний раз редактировалось angvelem, 09.12.2012 в 23:43.
Ответить с цитированием
  #99  
Старый 09.12.2012, 23:47
Аватар для sariman
sariman sariman вне форума
Активный
 
Регистрация: 19.11.2011
Адрес: Украина, Луганская обл.
Сообщения: 244
Версия Delphi: 7, XE, Lazarus
Репутация: выкл
По умолчанию

К сожалению, мерцает Не сильно конечно, но мерцает.
Ответить с цитированием
  #100  
Старый 09.12.2012, 23:53
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Что там может мерцать?
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #101  
Старый 09.12.2012, 23:55
Аватар для sariman
sariman sariman вне форума
Активный
 
Регистрация: 19.11.2011
Адрес: Украина, Луганская обл.
Сообщения: 244
Версия Delphi: 7, XE, Lazarus
Репутация: выкл
По умолчанию

Ладно, этим разберусь попозже, у меня появился другие вопросы:
1. Когда вы кидали флаги для Popup Menu (RadioItem), но я вот не пойму, каким образом можно ставить AutoCheck на итемы и проверять выбран он или нет.
2. В тексте элемента вы указывали на некоторые элементы знак '&' в начале строки, что этот символ означает?
Ответить с цитированием
  #102  
Старый 09.12.2012, 23:56
Аватар для sariman
sariman sariman вне форума
Активный
 
Регистрация: 19.11.2011
Адрес: Украина, Луганская обл.
Сообщения: 244
Версия Delphi: 7, XE, Lazarus
Репутация: выкл
По умолчанию

Цитата:
Сообщение от angvelem
Что там может мерцать?
При ресайзе немного мерцает.
Ответить с цитированием
  #103  
Старый 10.12.2012, 00:03
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Это будет.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #104  
Старый 10.12.2012, 00:51
Аватар для sariman
sariman sariman вне форума
Активный
 
Регистрация: 19.11.2011
Адрес: Украина, Луганская обл.
Сообщения: 244
Версия Delphi: 7, XE, Lazarus
Репутация: выкл
По умолчанию

Цитата:
Сообщение от sariman
Ладно, этим разберусь попозже, у меня появился другие вопросы:
1. Когда вы кидали флаги для Popup Menu (RadioItem), но я вот не пойму, каким образом можно ставить AutoCheck на итемы и проверять выбран он или нет.
2. В тексте элемента вы указывали на некоторые элементы знак '&' в начале строки, что этот символ означает?
Писал выше.
Ответить с цитированием
  #105  
Старый 10.12.2012, 01:33
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

1. Чуть позже код выложу.
2. Символ перед которым стоит & отображается подчёркнутым ("горячмй" символ).

Код:
var
  I : Integer;
begin
  I := 0;
  while I < GetMenuItemCount(Menu) do
  begin
    CheckMenuItem(Menu, I, MF_BYPOSITION or MF_UNCHECKED);
    inc(I);
  end;
  CheckMenuItem(Menu, ID, MF_BYCOMMAND or MF_CHECKED);
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.

Последний раз редактировалось angvelem, 10.12.2012 в 01:44.
Ответить с цитированием
Этот пользователь сказал Спасибо angvelem за это полезное сообщение:
sariman (10.12.2012)
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 07:21.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2026