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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.05.2012, 17:37   #11
Кольша
Далеко не
Участник клуба
 
Аватар для Кольша
 
Регистрация: 11.08.2011
Сообщений: 1,512
По умолчанию

FillRect вроде отчищает его
UPD: Не успел BDA опередил
Кольша вне форума Ответить с цитированием
Старый 16.05.2012, 18:33   #12
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Между какими строками нужно поместить этот код вызова?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 16.05.2012, 18:41   #13
Кольша
Далеко не
Участник клуба
 
Аватар для Кольша
 
Регистрация: 11.08.2011
Сообщений: 1,512
По умолчанию

Можно сделать так кинуть две картинки на форму в одну загрузить картинку и присвоить ей(image*) visible:=false, а на другой рисовать
Код:


procedure TForm1.FormCreate(Sender: TObject);
begin
  with Image1.Canvas do
  begin
    Brush.Color:=clBlue;
    Brush.Style:=bsSolid;
    FillRect(ClipRect);
    Font.Color:=clYellow;
  end;
end;

procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  with Image1.Canvas do
  begin
    FillRect(ClipRect);
draw(0,0,image*.canvas);
    TextOut(x,y,'text');
  end;
end;
Вроде так должно работать на IDE не проверял
Кольша вне форума Ответить с цитированием
Старый 16.05.2012, 19:22   #14
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

А без дополнительного изображения разве нельзя?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 16.05.2012, 19:24   #15
Кольша
Далеко не
Участник клуба
 
Аватар для Кольша
 
Регистрация: 11.08.2011
Сообщений: 1,512
По умолчанию

ну если фон. не картинка а просто цвет то можно покрасить canvas, ну а если картинку том можно с ресурсами повозиться
Кольша вне форума Ответить с цитированием
Старый 16.05.2012, 19:30   #16
3D Hunter
Сумрачная тень
Форумчанин
 
Аватар для 3D Hunter
 
Регистрация: 05.03.2009
Сообщений: 689
По умолчанию

Код:
procedure TForm1.FormCreate(Sender: TObject);
begin
  with Image1.Canvas do
  begin
    Brush.Bitmap:=TBitmap.Create;
    with Brush.Bitmap do
    begin
      LoadFromFile('D:\1.bmp');
    end;
    FillRect(ClipRect);
    Font.Color:=clRed;
  end;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  Image1.Canvas.Brush.Bitmap.Free;
end;

procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  with Image1.Canvas do
  begin
    FillRect(ClipRect);
    TextOut(x,y,'text');
  end;
end;
Только пока не понял, почему фон текста не прозрачен...
"ковыряю изнутри" (с)
3D Hunter вне форума Ответить с цитированием
Старый 16.05.2012, 19:33   #17
Кольша
Далеко не
Участник клуба
 
Аватар для Кольша
 
Регистрация: 11.08.2011
Сообщений: 1,512
По умолчанию

может Canvas.Brush.Color на ето влияет

Последний раз редактировалось Кольша; 16.05.2012 в 19:35.
Кольша вне форума Ответить с цитированием
Старый 16.05.2012, 19:40   #18
3D Hunter
Сумрачная тень
Форумчанин
 
Аватар для 3D Hunter
 
Регистрация: 05.03.2009
Сообщений: 689
По умолчанию

Не будем угадывать. Все уже проверял, не то. Если вы знаете точное решение, напишите код, буду благодарен.
"ковыряю изнутри" (с)
3D Hunter вне форума Ответить с цитированием
Старый 16.05.2012, 20:49   #19
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Не очень нравится, но похоже оно (вернее совсем не нравится, но только этого за 20 минут добился)
Код:
var Bitmap: TBitmap;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Bitmap:=TBitmap.Create;
  Bitmap.LoadFromFile('e:\1.bmp');
  Image1.Canvas.Brush.Bitmap:=Bitmap;
  Image1.Canvas.FillRect(Image1.Canvas.ClipRect);
  Image1.Canvas.Font.Color:=clRed;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  Bitmap.Free;
end;

procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var xStyle: TBrushStyle;
begin
  Image1.Canvas.Brush.Bitmap:=Bitmap;
  Image1.Canvas.FillRect(Image1.Canvas.ClipRect);
  Image1.Canvas.Brush.Style:=bsClear;
  Image1.Canvas.TextOut(x,y,'text');
end;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 16.05.2012 в 21:01.
Аватар вне форума Ответить с цитированием
Старый 17.05.2012, 10:29   #20
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,881
По умолчанию

Можно развлечься с CopyRect'ингом (а ещё лучше блиттингом) из фонового битмапа области размером X + GetTextWidth, Y + GetTextHeight
Тогда не надо будет Филректа и переключать режим кисти, пусть всегда будет бсклиар. Да и время заливки "подложки" текста будет побыстрее (особенно при блиттинге, ибо копирект несёт в себе стретчблит)

Вот кстати мой личный Копирект на блите, ректы должны быть одноразмерные (надо будет ассерт мне ещё сюда под их проверку из EqualRect добавить)
Код:
procedure copyrect(canvdest, canvsrc: TCanvas; rectdest, rectsrc: TRect);
begin
  Assert((canvdest <> nil) or (canvsrc <> nil), strRedrawError);
  bitblt(canvdest.handle, rectdest.Left, rectdest.Top, rectdest.Right -
    rectdest.Left, rectdest.Bottom - rectdest.Top, canvsrc.Handle, rectsrc.Left,
    rectsrc.Top, SRCCOPY);
end;

Последний раз редактировалось phomm; 17.05.2012 в 10:35.
phomm вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не рисуется битмап Jugger Win Api 2 03.04.2012 15:15
Pascal хвост змейки zhenka619 Помощь студентам 1 30.12.2011 14:01
Хвост для кометы X@OC JavaScript, Ajax 0 29.07.2011 10:34
очередь с указателем на хвост и голову Anny_Apple Паскаль, Turbo Pascal, PascalABC.NET 0 02.05.2011 21:04
Не рисуется спрайт в Delphix DOLBY Мультимедиа в Delphi 0 01.04.2009 23:09