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

Было бы прикольно, вместо видео увидеть код
...
Рейтинг: 0 / 0
25.06.2019, 10:23
    #39830196
Женя32
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BitBlt функция не срабатывает
_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
25.06.2019, 10:38
    #39830207
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BitBlt функция не срабатывает
Вынести код отрисовки в обработчик OnPaint/WM_PAINT, а из EditChange вызывать только Image.Refresh
...
Рейтинг: 0 / 0
25.06.2019, 10:40
    #39830208
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BitBlt функция не срабатывает
Вот так 21890857
...
Рейтинг: 0 / 0
25.06.2019, 10:55
    #39830224
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BitBlt функция не срабатывает
Код: pascal
1.
[DCC Error] Unit1.pas(52): E2003 Undeclared identifier: 'posit_let'
...
Рейтинг: 0 / 0
25.06.2019, 11:00
    #39830229
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BitBlt функция не срабатывает
Зачем 4 раза (ТЕСТ) в одно и то же место писать одно и тоже ?
Код: pascal
1.
2.
for i:=1 to length(s) do
  TextOut(posit_let[1],379,s);
...
Рейтинг: 0 / 0
25.06.2019, 11:04
    #39830231
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BitBlt функция не срабатывает
DimaBrЗачем 4 раза (ТЕСТ) в одно и то же место писать одно и тоже ?Чтобы с гарантией
...
Рейтинг: 0 / 0
25.06.2019, 11:10
    #39830234
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BitBlt функция не срабатывает
Код: 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
25.06.2019, 11:10
    #39830235
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BitBlt функция не срабатывает
_Vasilisk_Вынести код отрисовки в обработчик OnPaint/WM_PAINT

Поскольку он использует для рисования TImage, это не очень хороший совет: внутренний
битмап перерисовывать с такой частотой не нужно, достаточно как раз только при изменениях.
Вот если бы это был TPaintBox...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
25.06.2019, 11:37
    #39830252
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BitBlt функция не срабатывает
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
25.06.2019, 11:49
    #39830258
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BitBlt функция не срабатывает
_Vasilisk_Использовать TImage для рисования само по себе нонсенс. Но рисовать в OnChange вообще
полный бред

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


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