Форум: "Начинающим";
Текущий архив: 2010.09.12;
Скачать: [xml.tar.bz2];
ВнизКак залить 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 вся ветка
Форум: "Начинающим";
Текущий архив: 2010.09.12;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.004 c