Witam wszytskich programistów;] mam nadzieję, że uzyskam tutaj odpowiedzi na moje pytania. Mimo, ze jestem amatorem w Delphi to udało mi się zrobić następujący program(z pomocą internetu oczywiście;])
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,
Forms,
Dialogs, ExtDlgs, StdCtrls, Buttons, ExtCtrls;
type
TForm1 = class(TForm)
Image1: TImage;
BitBtn1: TBitBtn;
OpenPictureDialog1: TOpenPictureDialog;
Label1: TLabel;
Edit1: TEdit;
Button1: TButton;
Image2: TImage;
procedure BitBtn1Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
if OpenPictureDialog1. Execute then
Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName)
else ShowMessage('Nie wybrano żadnego obrazka!!!');
end;
procedure TForm1.Button1Click(Sender: TObject);
var alfa,cosa, sina, sina90, cosa90:real;
x,y,x1,y1,ox,oy:integer;
begin
{pobranie kąta podanego w radianach}
alfa:=strtofloat(edit1.text);
{wyliczenie potrzebnych funkcji trygonometrycznych, żeby zmniejszyć
czas wykonania pętli}
cosa:=cos(alfa);
sina:=sin(alfa);
cosa90:=cos(alfa+pi/2);
sina90:=sin(alfa+pi/2);
{Zdefiniowanie punktu wokół którego ma odbywać się obrót- w tym
przypadku jest to środek obrazka}
ox:=image1.Picture.width div 2;
oy:=image1.Picture.height div 2;
{pętla rysująca}
for x:=0 to image1.picture.width-1 do
for y:=0 to image1.picture.height-1 do begin
{wyliczenie współrzędnych po obrocie}
x1:=round(cosa*(x-ox)+cosa90*(y-oy));
y1:=round(sina*(x-ox)+sina90*(y-oy));
{narysowanie na płótnie odpowiedniego pixela}
canvas.pixels[x1+60,y1+60]:=image2.picture.bitmap.canvas.pixels[x,y];
canvas.pixels[x1+61,y1+60]:=image2.picture.bitmap.canvas.pixels[x,y];
{60,60 będzie punktem odpowiadającym punktowi znajdującemu się na
osi obrotu}
end;
end;
end.
I moje pytania są następujące:
- jak zrobić aby już obrócony obraz pojawiał się w okienku IMAGE 2
- w okienku po wpisaniu nie wartości liczbowej tylko np tekstu lub coś podobnego wyskakiwał komunikat ERROR
- a także jakby ktoś wklepał ten program do Delphi to obrócony obrazek jest nie wyraźny... tak jakby pixele się nie obracały i wychodzą różne "kwiatuszki".
Bardzo proszę o pomoc!!