Форум: "Media";
Текущий архив: 2005.09.25;
Скачать: [xml.tar.bz2];
ВнизИзменения размера BMP Найти похожие ветки
← →
zero-g © (2005-05-08 06:14) [0]Доброго времени суток.
Собственно у меня две проблеммки...
1. Немогу уменьшить bmp, после преоразований получаю черный экран, а после обратных приобразований получаю картинку....
var bmp : TBitmap;
...
вот тут я пытаюсь изменить ее размер
if (form1.Image1.Picture.Width > Screen.Width) or (form1.Image1.Picture.Height > Screen.Height) then
begin
sizeF := true;
bmp := TBitmap.Create;
bmp.Assign(form1.Image1.Picture.Bitmap);
if form1.Image1.Picture.Width > Screen.Width then
bmp.Width := Screen.Width;
if form1.Image1.Picture.Height > Screen.Height then
bmp.Height := Screen.Height;
form1.Image1.Picture.Assign(bmp);
bmp.Free;
Form1.Image1.Width := Image1.Picture.Width;
Form1.Image1.Height := Image1.Picture.Height;
end;
А здесь возращаю обратно...
if sizeF then
begin
sizeF := false;
bmp := TBitmap.Create;
bmp.Assign(form1.Image1.Picture.Bitmap);
bmp.Width := iWidth;
bmp.Height := iHeigth;
form1.Image1.Picture.Assign(bmp);
bmp.Free;
Form1.HorzScrollBar.Range := iWidth;
Form1.VertScrollBar.Range := iHeigth;
end;
Что я не правильно делаю? Подскажите пожалуйста.
2. А вторая проблеммка заключается в том, что по нажатию клавиши и переходу к просмотру на весь экран в первый раз все нормально, небольшая по размерам фото остается своего размера, но если потом выйти и опять зайти в данный режим, она увиличивается, сама маштабируется типо... ИМХО парадокс!!! Я ничего такого не делел!!! Вчем фишка может быть, самаму аж любопытно...
вот весь код...
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, ComCtrls, Menus,jpeg;
type
TForm1 = class(TForm)
Image1: TImage;
MainMenu1: TMainMenu;
File1: TMenuItem;
Image2: TMenuItem;
FullScreen1: TMenuItem;
procedure FormShow(Sender: TObject);
procedure FormKeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
x,y,fWidth,fHeigth,iWidth,iHeigth : integer;
sizeF : boolean;
implementation
{$R *.dfm}
procedure TForm1.FormShow(Sender: TObject);
var jp : TJPEGImage;
rash : string[4];
flag : boolean;
begin
flag := false;
if ParamCount <> 0 then
begin
rash := AnsiUpperCase(ExtractFileExt(ParamStr(1)));
if rash = ".BMP" then
form1.Image1.Picture.LoadFromFile(ParamStr(1));
if rash = ".JPG" then
begin
jp := TJPEGImage.Create;
jp.LoadFromFile(ParamStr(1));
form1.Image1.Picture.Assign(jp);
jp.Free;
end;
flag := true;
end;
if flag then
begin
Form1.HorzScrollBar.Range := Image1.Picture.Width;
Form1.VertScrollBar.Range := Image1.Picture.Height;
Form1.Image1.Width := Image1.Picture.Width;
Form1.Image1.Height := Image1.Picture.Height;
iWidth := form1.Image1.Picture.Width;
iHeigth := form1.Image1.Picture.Height;
end;
sizeF := false;
end;
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
var bmp : TBitmap;
begin
if key = #13 then
begin
if form1.BorderStyle = bsSingle then
begin//full screen
x := form1.Left;
y := form1.Top;
fWidth := form1.Width;
fHeigth := form1.Height;
form1.BorderStyle :=bsNone;
form1.File1.Visible := false;
form1.Image2.Visible := false;
form1.WindowState := wsMaximized;
if (form1.Image1.Picture.Width > Screen.Width) or (form1.Image1.Picture.Height > Screen.Height) then
begin
sizeF := true;
bmp := TBitmap.Create;
bmp.Assign(form1.Image1.Picture.Bitmap);
if form1.Image1.Picture.Width > Screen.Width then
bmp.Width := Screen.Width;
if form1.Image1.Picture.Height > Screen.Height then
bmp.Height := Screen.Height;
form1.Image1.Picture.Assign(bmp);
bmp.Free;
Form1.Image1.Width := Image1.Picture.Width;
Form1.Image1.Height := Image1.Picture.Height;
end;
end
else
begin//single
form1.BorderStyle := bsSingle;
form1.File1.Visible := true;
form1.Image2.Visible := true;
form1.WindowState := wsNormal;
form1.Left := x;
form1.Top := y;
form1.Width := fWidth;
form1.Height := fHeigth;
form1.Image1.Stretch := true;
if sizeF then
begin
sizeF := false;
bmp := TBitmap.Create;
bmp.Assign(form1.Image1.Picture.Bitmap);
bmp.Width := iWidth;
bmp.Height := iHeigth;
form1.Image1.Picture.Assign(bmp);
bmp.Free;
Form1.HorzScrollBar.Range := iWidth;
Form1.VertScrollBar.Range := iHeigth;
end;
form1.Image1.Width := iWidth;
form1.Image1.Height := iHeigth;
end;
end;
if key = #27 then
close;
end;
end.
← →
Leon © (2005-05-08 19:06) [1]Image1.Stretch не поможет?
← →
zero-g © (2005-05-09 05:10) [2]to Leon
>Image1.Stretch не поможет?
Неа, самое интересное то, что он вообще отказывается работать...
← →
Leon © (2005-05-11 09:54) [3]хм... может так?
var bmp: TBitmap
...
bmp := TBitmap.Create; <- в конструкторе
image1.hide; // не показывать
bmp.Height := ... // нужные размеры: все окно или его часть
bmp.Width := ...
Image1.Picture.Bitmap.Canvas.Draw(0,0,bmp);
canvas.Draw(0,0,bmp); <- в обработчике OnPaint формы
P.S. судя по Вашему коду, сжатие/растяжение не требуется.
P.P.S. > вообще отказывается работать...
cтранно... пробовали просто менять размер Image1 c stretch=true?
← →
Vadim68 (2005-05-11 17:52) [4]А не подскажите как для BMP-файла задать требуемое разрешение. По умолчанию получается 75, а мне надо 400
← →
Leon © (2005-05-12 19:55) [5]Если не ошибаюсь, то так
for ix:=0 to 400-1 do
for iy:=0 to 400-1 do
BigBitmap.Canvas.Pixels[ix,iy] := SmallBitmap.Canvas.Pixels[Round(ix*75/400),Rpund(iy*75/400)];
← →
programania © (2005-05-12 20:24) [6]Посмотри еще примеры
http://delphimaster.net/view/8-1114806809/
там размеры image меняются вместе с формой и ничего не пропадает и даже не мерцает
Vadim68 (11.05.05 17:52) [4]
>А не подскажите как для BMP-файла задать требуемое разрешение. По умолчанию получается 75, а мне надо 400
Запиши что надо в заголовке BMP в
biXPelsPerMeter и biYPelsPerMeter
подробнее о формате BMP
http://jenyay.wallst.ru/index.php?id=bmp
Страницы: 1 вся ветка
Форум: "Media";
Текущий архив: 2005.09.25;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.055 c