![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Уже месяца 3 ищу в инете процедуру поворота изображения. Скачал это:
Код:
procedure povorot(bmp1: tbitmap; var bmp2: tbitmap; a: real);
var
x1,y1: integer; // íîâàÿ òî÷êà
x2,y2: integer;
r: single; // ðàñòîÿíèå îò xo,yo è òî÷êîé êîòîðóþ íóæíî ïîâåðíóòü
xo, yo: integer; // îòíîñèòåëüíî êàêîé òî÷êè íóæíî ïîâîðà÷èâàòü
s, c: extended; // sin cos
begin
xo:=bmp1.Width div 2; yo:=bmp1.Height div 2; // öåíòð êàðòèêè
for y2 := 0 to bmp1.Height - 1 do
for x2 := 0 to bmp1.Width - 1 do
begin
r := sqrt(sqr(x2 - xo) + sqr(y2 - yo)); // ðàñòîÿíèå îò ïîâîðà÷èâàåìîé òî÷êè äî òîé òî÷êè îòíîñèòåëüíî êîòîðîé íóæíî ïîâîðà÷èâàòü
SinCos(a + arctan2((y2 - yo), (x2 - xo)), s, c);
x1:=round(xo + r * c); y1:=round(yo + r * s);
if (x1>=0)and(x1<bmp1.Width)and(y1>=0)and(y1<bmp1.Height) then // åñëè òî÷êà ïîñëå ïîâîðîòà íàõîäèòñÿ íà êàðòèíêå òî ðèñóåì åå
begin
if bmp1.Canvas.Pixels[x1,y1]<>clwhite then
bmp2.Canvas.Pixels[x2,y2]:=bmp1.Canvas.Pixels[x1,y1];
end
else // èíà÷å âìåñòî íåå öâåò êîòîðûé áóäåò ïðîçðà÷íûé(â äàííîì ñëó÷àå áåëûé)
bmp2.Canvas.Pixels[x2,y2]:=clwhite;
end;
end;
После копирования с пояснениями что то случилось... Вообщем функцию скачал... А че с ней делать незнаю!!! Пожалуйста объясните! Или кинте другую... И что такое DLL и что с ним (как?) делать киньте ссылку на статейку... плз. |
|
#2
|
|||
|
|||
|
дык скачай заного, че непомниш откуда качал?
|
|
#3
|
|||
|
|||
|
http://www.helloworld.ru/texts/comp/.../dll/index.htm
тут все про ДЛЛ в делфи! |
|
#4
|
|||
|
|||
|
Не помню давно качал...
Ну кто знает??? |
|
#5
|
|||
|
|||
|
1. А тебе они нужны? Будешь сам разбираться? Не считая того, что собственно, по параметрам все и так ясно.
2. Попробуй найди библиотеку gfx. я ее в свое время с torry качал. там много разных функций. |
|
#6
|
|||
|
|||
|
Кинь Image и загрузи картинку bmp. А также кнопку. Добавь uses Math.
Код:
type
TForm1 = class(TForm)
Button1: TButton;
Image1: TImage;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses Math;
{$R *.dfm}
procedure povorot(bmp1: tbitmap; var bmp2: tbitmap; a: real);
...
end;
procedure TForm1.Button1Click(Sender: TObject);
var
b1: TBitmap;
begin
b1:= TBitmap.Create;
b1.Width:= Image1.Picture.Bitmap.Height; { Это для поворота на 90 град. }
b1.Height:= Image1.Picture.Bitmap.Width; { но можно использовать другие размеры }
povorot(Image1.Picture.Bitmap, b1, PI/2.0); { Угол может быть любым }
Image1.Picture.Bitmap.Assign(b1);
b1.Free;
end;
end.Последний раз редактировалось AlexSku, 07.10.2008 в 12:43. |
|
#7
|
|||
|
|||
|
Спасибо...
буду разбираться... ![]() |