Ольга
Ольга

Нужно сделать масштабирование изображения по такой формуле:

Cnew [i, j] = Cold [k1*i, k2*j],
где k1 = Hold/Hnew (высота) , k2 = Wold/Wnew (ширина) .
Не получается. Только уменьшает почему-то. Если больше ста процентов масштаб ввести, рисунок вообще пропадает ((((

На Delphi надо сделать

Ал
Алёнка

не понимаю, какие проблемы. всё элементарно. Вот я рабочий пример нацарапал, у меня BMP фотка валялась на диске E:\ :

1)при нажатии кнопки "Enter" загружалась и рисовалась оригинальная картинка.
2)далее, после нажатия кнопки "пробел" картинка масштабировалась и рисовалась уже масштабированной.

unit Unit1;

interface

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

type
TForm1 = class(TForm)
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
hold,wold:integer;
b1,b2:tbitmap;
implementation

{$R *.dfm}

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var
m,n:integer;
k1,k2:single;
const
hnew=480;
wnew=640;
begin
if key=13 then
begin
b1:=tbitmap.Create; b2:=tbitmap.Create;
b1.LoadFromFile('E:\bike nice.bmp');
canvas.Draw(0,0,b1);
hold:=b1.Height;
wold:=b1.Width;
end;
if key=32 then
begin
b2.Width:=wnew; b2.Height:=hnew;
k1:=hold/hnew;
k2:=wold/wnew;
for m:=1 to wnew do
for n:=1 to hnew do
b2.canvas.Pixels[m,n]:=b1.Canvas.Pixels[round(m*k2),round(n*k1)];
canvas.Draw(0,0,b2);

end;
end;

end.

Похожие вопросы
(Java Script) Canvas - ошибки визуализации при масштабировании изображения в Opera
как сделать масштабирование сайта
Вопрос по Corel масштабирование
Нужна формула масштабирования картинки
2 математические формулы для подгонки изображения в прямоугольник
Помогите с масштабированием 3D max
Как сделать векторное изображение?
Мне нужно как то сделать такое изображение смс ...
Незначительные косяки с Изображениями (при масштабировании темнеют правый и нижний край)
как сделать масштабирование сайта по центру???