Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Замостить Timage


Страницы:   1 2

Шакал ©   (2009-01-16 10:24:00) 

Доброго времени суток!
Создал форму, с верху и слева панели - нужно всю остальную область замостить (из небольшого .bmp) т.е. сделать фон.
Пишу следующий код:

procedure TForm1.FormPaint(Sender: TObject);
var
x,y: integer;
pic: tbitmap;
pic1: timage;
begin
pic1:=timage.Create(form1);
pic1.Align:=alClient;
pic1.Parent:=form1;
pic:=tbitmap.Create;
pic.LoadFromFile('img\pole.bmp');
for x:=0 to round(pic1.width/120) do
for y:=0 to round(pic1.height/150) do
pic1.Canvas.Draw( X*120, Y*150, pic);

end;
Изоброжение появляется, но постоянно мигает (похоже постоянно прорисовывается заново).
Подскажите плиз...


Шакал   (2009-01-16 13:41:00) [1]

а не все ок....просто timage забыл удалить.....
ОГРОМНОЕ СПАСИБО {RASkov}
И Всем огромное человеческое спасибо за помощь...


Шакал   (2009-01-16 13:36:00) [2]


> {RASkov} ©

В принципе работает без тормозов, НО проц грузит на 99% и каждую 1 секунду жрет по 16 кб памяти....


{RASkov}   (2009-01-16 12:57:00) [3]

unit Unit1;
interface
uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs;

type
 TForm1 = class(TForm)
   procedure FormCreate(Sender: TObject);
   procedure FormPaint(Sender: TObject);
 private { Private declarations }
 public  { Public declarations }
   BMP: TBitmap;
 end;

var Form1: TForm1;

implementation
{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
 BMP:=TBitmap.Create;
 BMP.LoadFromFile(<name.bmp>);
end;

procedure TForm1.FormPaint(Sender: TObject);
var X, Y: Integer;
begin
 for X:=0 to ClientWidth div BMP.Width do
  for Y:=0 to ClientHeight div BMP.Height do
   Canvas.Draw(X*BMP.Width, Y*BMP.Height, BMP);
end;

end.


Ega23   (2009-01-16 12:45:00) [4]


> Например, в TForm.OnCreate


Это для старта. И в OnResize


KSergey   (2009-01-16 12:30:00) [5]

> Шакал   (16.01.09 12:17) [16]
> я имел ввиду количество раз мощения)))

Их не надо искусственно ограничивать. Достаточно разместить этот код в обработчике, срабатывающем 1 раз за время жизни программы (или формы), а не каждый раз при отрисовке.
Например, в TForm.OnCreate


Ega23   (2009-01-16 12:30:00) [6]


> я имел ввиду количество раз мощения)))


Тебе незнакомы операции деления, вычитания, сложения и умножения?
Может ну его нафиг, программирование? В армии люди нужны... Да и с дворниками как-то тоже не очень...


Шакал   (2009-01-16 12:17:00) [7]


> TForm.ClientWidth, TForm.ClientHeight + F1.

я имел ввиду количество раз мощения)))


Шакал   (2009-01-16 12:12:00) [8]


> Надо использовать компонент TZamostitelRestrictor

напишешь, скинь на мыло)))


Ega23   (2009-01-16 11:55:00) [9]


> а как ограничить?
>


TForm.ClientWidth, TForm.ClientHeight + F1.


Медвежонок Пятачок   (2009-01-16 11:55:00) [10]

Надо использовать компонент TZamostitelRestrictor


Шакал   (2009-01-16 11:47:00) [11]


> > 2. ОДИН РАЗ его мостишь.

а как ограничить?


Медвежонок Пятачок   (2009-01-16 11:42:00) [12]

procedure TForm1.FormPaint(Sender: TObject);
.....
Caption := Format('Я закаким-то хреном загрузил этот файл уже %d раз'#13#10'А пофик, потому как я суров',[Tag]);
Tag := Succ(Tag);
......


Шакал   (2009-01-16 11:29:00) [13]


> А не слишком ли ты суров?

в чем суровость? объясните плиз...


Ega23   (2009-01-16 11:21:00) [14]


> а пример кода мона-_О


Сам подумай. Учись учиться.


Шакал   (2009-01-16 11:10:00) [15]


> Алгоритм такой:
> 1. Заводишь в памяти Bitmap, выставляешь ему размеры.
> 2. ОДИН РАЗ его мостишь.
> 3. При перерисовке формы назначаешь этот битмап канвасу
> формы.

а пример кода мона-_О

>
> Ты полчасика поводи, потом придёшь, ещё и про нехватку памяти
> спросишь.

через две минуты выдает)))))


Ega23   (2009-01-16 11:05:00) [16]


> А не слишком ли ты суров?


Это цветочки. Он ещё по экземпляру TImage создаёт на каждую перерисовку.


Ega23   (2009-01-16 11:04:00) [17]

Ну всё правильно, у тебя на каждую перерисовку такая фигня идёт.

Алгоритм такой:
1. Заводишь в памяти Bitmap, выставляешь ему размеры.
2. ОДИН РАЗ его мостишь.
3. При перерисовке формы назначаешь этот битмап канвасу формы.


Плохиш   (2009-01-16 11:02:00) [18]


> Шакал   (16.01.09 10:51) [3]
>
> и проц почти на 100% приложение грузит....
>

Ты полчасика поводи, потом придёшь, ещё и про нехватку памяти спросишь.


Медвежонок Пятачок   (2009-01-16 11:01:00) [19]

procedure TForm1.FormPaint(Sender: TObject);
var
....
pic.LoadFromFile('img\pole.bmp');
.....

А не слишком ли ты суров?


Шакал   (2009-01-16 10:51:00) [20]

и проц почти на 100% приложение грузит....


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо