Вниз
Скачать: CL | DM;

Как залить TImage TBitmap-ом   Найти похожие ветки 

← →
HRustBB   (2010-06-07 01:05) [0]

есть форма, на ней один TImage на всю форму, создаем TBitmap, подгоняем его размеры под TImage. При изменении размеров формы, и соответственно TImage, изменяем размеры TBitmap и снова заполняем им TImage, но на форме TBitmap не меняет своих размеров. Вобщем вот код


unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, ExtCtrls, ComCtrls;

type
 TForm1 = class(TForm)
   Image1: TImage;
   procedure FormCreate(Sender: TObject);
   procedure FormResize(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;
 bm:TBitmap;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
bm:=TBitmap.Create;
end;

procedure TForm1.FormResize(Sender: TObject);
begin
bm.Width:=Width;
bm.Height:=Height;
bm.Canvas.Brush.Color:=clRed;
Image1.Canvas.Draw(0,0,bm);
end;

end.


как сделать чтобы при изменении размеров формы битмап тоже менял свой размер и полностью покрывал имейдж.


← →
antonn ©   (2010-06-07 01:35) [1]

image1.width - это ширина визуального компонента. Этот компонент содержит внутри себя битмап, у которого свой image1.picture.bitmap.width


← →
Германн ©   (2010-06-07 02:05) [2]

Image.Stretch не помогает?


← →
pest ©   (2010-06-07 10:15) [3]

Image.Stretch не всегда красиво делает.

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, ComCtrls;

type
TForm1 = class(TForm)
   Image1: TImage;

  procedure FormCreate(Sender: TObject);
  procedure FormResize(Sender: TObject);
private
  { Private declarations }
public
  { Public declarations }
end;

var
 Form1: TForm1;
 bm: TBitmap;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
 bm := TBitmap.Create;
 Image1.Anchors := [akLeft,akTop,akRight,akBottom];
end;

procedure TForm1.FormResize(Sender: TObject);
var
 r: TRect;
begin
 r := rect(0, 0, Image1.Width, Image1.Height);
 bm.Width := Image1.Width;
 bm.Height := Image1.Height;
 bm.Canvas.Brush.Color := clWhite;
 bm.Canvas.FillRect(r);
 bm.Canvas.Brush.Color := clRed;
 bm.Canvas.Ellipse(r);
 Image1.Picture.Bitmap.Assign(bm);
end;

end.


← →
HRustBB   (2010-06-11 14:18) [4]

а еще вопрос. у меня на битмапе рисуется изображение затем оно заливается на канвас, затем другое изображение и тоже на санвас, так вот возможно ли избавитться от мерцания при перерисовке канваса


← →
han_malign   (2010-06-11 16:50) [5]


> возможно ли избавитться от мерцания при перерисовке канваса

- возможно - если выкинуть на хрен TBitmap, TImage и рисовать(например в TPaintBox) -  как положено - в OnPaint. Регенировать кадр Invalidate-ом... Если не хочется в ручную масштабировать, см. SetWorldTransform, SetWindowExtEx/SetViewportExtEx, ScaleWindowExtEx/ScaleViewportExtEx... Лучше - SetWorldTransform, добиться от от Window/Viewport - точного масштабирования я лично ни разу не смог...


← →
antonn ©   (2010-06-11 17:05) [6]


> возможно ли избавитться от мерцания при перерисовке канваса

- возможно, если рисовать все объекты на буферном Tbitmap, и его выводить на любой канвас по окончании построения "кадра".


← →
HRustBB   (2010-06-11 17:41) [7]


> antonn ©


а че за буферный битмап, в моем примере bm: TBitmap; не сойдет за буфер?


← →
antonn ©   (2010-06-11 17:46) [8]

он и есть. Рисуешь все на нем, а в конце выводишь на канвас (формы или paintbox - не важно) через canvas.copyrect() или BitBlt()


← →
HRustBB   (2010-06-11 19:32) [9]


> han_malign   (11.06.10 16:50) [5]


а что за invalidat можно подробней


← →
HRustBB   (2010-06-12 01:33) [10]

Не, ну едрена вош:


procedure TForm1.FormCreate(Sender: TObject);
begin
bm:=TBitmap.Create;
Form1.DoubleBuffered:=true;
end;


и всёё


← →
абизяна   (2010-06-12 12:55) [11]


> HRustBB   (12.06.10 01:33) [10]
> Не, ну едрена вош:
>
>
> procedure TForm1.FormCreate(Sender: TObject);
> begin
> bm:=TBitmap.Create;
> Form1.DoubleBuffered:=true;
> end;
>
>
> и всёё

Ну вот утёр всем нос ;-)
А ты уверен, что фсёёёё?


← →
HRustBB   (2010-06-12 14:51) [12]


> А ты уверен, что фсёёёё?


жизнь покажет )))



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.006 c
4-1240162200
alex870
2009-04-19 21:30
2010.09.12
Какой файл проигрывает Windows Media Player


15-1276687464
HTCppcpcpc
2010-06-16 15:24
2010.09.12
HTC


2-1276664021
Delphist2
2010-06-16 08:53
2010.09.12
текст в ячейке excel


2-1276727283
TechnoDreamer
2010-06-17 02:28
2010.09.12
Zoom в TWebBrowser (обработка мыши)


15-1276679561
vajo
2010-06-16 13:12
2010.09.12
диски для raid




   Наверх