Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.02.2019, 09:47   #1
Maetsky
Пользователь
 
Регистрация: 14.03.2011
Сообщений: 14
По умолчанию Очистка экрана после вывода текста на Канве

Код:
Код:
procedure DrawOnScreen(const S: string);
var
  DC: HDC;
  Canvas: TCanvas;
  X, Y: Integer;
begin
  DC := GetDC(0);
  Canvas := TCanvas.Create;
  try
    Canvas.Handle := DC;
    Canvas.Brush.Style := bsClear;
    with Canvas.Font do
    begin
      Name := 'Times New Roman';
      Size := 50;
      Color := clRed;
    end;
    X := (GetSystemMetrics(SM_CXSCREEN) - Canvas.TextWidth(S)) div 2;
    Y := (GetSystemMetrics(SM_CYSCREEN) - Canvas.TextHeight(S)) div 2;
    Canvas.TextOut(x, y, S);
  finally
    ReleaseDC(0,DC);
    Canvas.Free;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
DrawOnScreen('Сообщение на экране');
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
RedrawWindow(GetDesktopWindow,nil,0,RDW_INVALIDATE + RDW_UPDATENOW + RDW_ALLCHILDREN);
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
RedrawWindow(GetDesktopWindow, nil, 0, RDW_ERASE or RDW_INVALIDATE or RDW_UPDATENOW or RDW_ALLCHILDREN or RDW_FRAME);
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
InvalidateRect(0,0,false);
InvalidateRect(0,0,true);
end;
Нюансы работы:
1. Текст выводится в чёрном прямоугольнике, а хотелось бы, чтобы фон текста отсутствовал, т.е. чёрного прямоугольника не было.
2. При нажатии на Button2 и Button3 текст не исчезает, хотя должен бы. При нажатии на Button4 - исчезает, но:
3. При выводе другого текста, он отображается наложением на старый.

Почему не стирается предыдущий текст и как избавится от чёрного прямоугольника вокруг текста? Операционные Vista и Win7.
Maetsky вне форума Ответить с цитированием
Старый 21.02.2019, 12:09   #2
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

Цитата:
Сообщение от Maetsky Посмотреть сообщение
Текст выводится в чёрном прямоугольнике
Это потому, что
Цитата:
Сообщение от Maetsky Посмотреть сообщение
Код:
Canvas.Brush.Style := bsClear;
Black Fregat вне форума Ответить с цитированием
Старый 21.02.2019, 12:36   #3
Maetsky
Пользователь
 
Регистрация: 14.03.2011
Сообщений: 14
По умолчанию

Код:
Canvas.Brush.Style := bsClear;
Этим я хотел сделать фон прозрачным, а если бы специально хотел чёрным сделать, то прописал бы это:
Код:
    Canvas.Brush.Style:=bsSolid;
    Canvas.Brush.Color:=clBlack;
Maetsky вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
очистка экрана Артэс Общие вопросы C/C++ 17 07.04.2016 15:05
Jрганизация вывода текста в прямоугольную область экрана [чистый СИ] cesta Помощь студентам 0 01.02.2013 20:41
Очистка экрана на С++ _vlad Общие вопросы C/C++ 4 28.01.2013 00:45
Подсчет строк и очистка экрана С++ miragex Общие вопросы C/C++ 1 08.01.2013 11:11
перенос текста на канве varelik Общие вопросы Delphi 11 15.09.2009 18:56