powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / BitBlt функция не срабатывает
14 сообщений из 14, страница 1 из 1
BitBlt функция не срабатывает
    #39830056
Женя32
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!
Пытаюсь с помощью BitBlt функции закрыть текст, выведенный на image с помощью TextOut(205,379,s). Но, одна буква не зарывается. Например, ввожу "ТЕСТ", потом стираю текст, но, первая буква не стирается.
Подскажите, пожалуйста, как исправить?
YouTube Video
...
Рейтинг: 0 / 0
BitBlt функция не срабатывает
    #39830079
Женя32
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Только что заметил, когда слово стираешь остается одна буква, и чтоб эта буква исчезла, нужно перетащить форму за пределы экрана.
Как с этим бороться?
...
Рейтинг: 0 / 0
BitBlt функция не срабатывает
    #39830190
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Женя32,

Было бы прикольно, вместо видео увидеть код
...
Рейтинг: 0 / 0
BitBlt функция не срабатывает
    #39830196
Женя32
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_Vasilisk_Женя32,

Было бы прикольно, вместо видео увидеть код
Легко!
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
procedure TForm1.Edit1Change(Sender: TObject);
var
  s: string;
  i: Integer;
begin

       BitBlt(Image1.Canvas.Handle, 271, 375, 25, 30, Image1.Canvas.Handle, 12, 12, SRCCOPY);

     BitBlt(Image1.Canvas.Handle, 305, 375, 25, 30, Image1.Canvas.Handle, 12, 12, SRCCOPY);
     BitBlt(Image1.Canvas.Handle, 340, 375, 25, 30, Image1.Canvas.Handle, 12, 12, SRCCOPY);
     BitBlt(Image1.Canvas.Handle, 375, 375, 25, 30, Image1.Canvas.Handle, 12, 12, SRCCOPY);

     s:=Edit1.Text;
     with Image1.Canvas do
      begin
          Refresh;
          Brush.Style := bsClear;
          Font.Size:=20;
          Font.Name:='Lucida Console';
          Font.Color:=clBlack;
         // FillRect(rect(10,10,10,10));
          Font.Style:= Image1.Canvas.Font.Style + [fsBold];
         SetBkMode(Image1.Canvas.Handle, Transparent);
          s:=Edit1.Text;
         for i:=1 to length(s) do
             TextOut(posit_let[1],379,s);
      end;      

end;
...
Рейтинг: 0 / 0
BitBlt функция не срабатывает
    #39830207
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вынести код отрисовки в обработчик OnPaint/WM_PAINT, а из EditChange вызывать только Image.Refresh
...
Рейтинг: 0 / 0
BitBlt функция не срабатывает
    #39830208
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот так 21890857
...
Рейтинг: 0 / 0
BitBlt функция не срабатывает
    #39830224
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: pascal
1.
[DCC Error] Unit1.pas(52): E2003 Undeclared identifier: 'posit_let'
...
Рейтинг: 0 / 0
BitBlt функция не срабатывает
    #39830229
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зачем 4 раза (ТЕСТ) в одно и то же место писать одно и тоже ?
Код: pascal
1.
2.
for i:=1 to length(s) do
  TextOut(posit_let[1],379,s);
...
Рейтинг: 0 / 0
BitBlt функция не срабатывает
    #39830231
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DimaBrЗачем 4 раза (ТЕСТ) в одно и то же место писать одно и тоже ?Чтобы с гарантией
...
Рейтинг: 0 / 0
BitBlt функция не срабатывает
    #39830234
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
procedure TForm1.Edit1Change(Sender: TObject);
begin
  with Image1.Canvas do begin
    Brush.Style := bsSolid;
    FillRect(ClientRect);
    Brush.Style := bsClear;
    Font.Size:=20;
    Font.Name:='Lucida Console';
    Font.Color:=clBlack;
    Font.Style:= Font.Style + [fsBold];
    TextOut(100,379,Edit1.Text);
  end;
end;
...
Рейтинг: 0 / 0
BitBlt функция не срабатывает
    #39830235
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_Вынести код отрисовки в обработчик OnPaint/WM_PAINT

Поскольку он использует для рисования TImage, это не очень хороший совет: внутренний
битмап перерисовывать с такой частотой не нужно, достаточно как раз только при изменениях.
Вот если бы это был TPaintBox...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
BitBlt функция не срабатывает
    #39830252
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovПоскольку он использует для рисования TImage, это не очень хороший совет:Использовать TImage для рисования само по себе нонсенс. Но рисовать в OnChange вообще полный бред
DimaBr
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
procedure TForm1.Edit1Change(Sender: TObject);
begin
  with Image1.Canvas do begin
    Brush.Style := bsSolid;
    FillRect(ClientRect);
    Brush.Style := bsClear;
    Font.Size:=20;
    Font.Name:='Lucida Console';
    Font.Color:=clBlack;
    Font.Style:= Font.Style + [fsBold];
    TextOut(100,379,Edit1.Text);
  end;
end;

А теперь сверни и разверни форму
...
Рейтинг: 0 / 0
BitBlt функция не срабатывает
    #39830258
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_Использовать TImage для рисования само по себе нонсенс. Но рисовать в OnChange вообще
полный бред

Нет, обычно это называется double buffering: всё рисуется на bitmap в момент изменения
ситуации, а уже этот bitmap рисуется на экране в WM_PAINT. Сильно улучшает
производительность при большом числе редко меняющихся визуальных объектов.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
BitBlt функция не срабатывает
    #39830297
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_А теперь сверни и разверни форму
Свернул и развернул. Ничего не изменилось. А должно ?
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / BitBlt функция не срабатывает
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]