Avatar billede w13 Novice
08. februar 2007 - 17:25 Der er 3 kommentarer og
1 løsning

Spejlvende billed

Hej Eksperter.

Hvordan spejlvender jeg et billed?

Mvh
W13
Avatar billede hrc Mester
09. februar 2007 - 11:55 #1
Dette eksempel vender halvdelen af bitmappen på hovedet. Muligvis er der behov for en bitmap at kopiere data over i - måske kan det gøres uden (se: http://www.codeguru.com/cpp/g-m/bitmap/specialeffects/article.php/c1739/)

procedure TfrmMain.btnTestClick(Sender: TObject);
var
  x, y : integer;
begin
  with Image.Picture do
    for x := 0 to Bitmap.Width - 1 do
      for y := 0 to Bitmap.Height - 1 do
        Bitmap.Canvas.Pixels[x,y] := Bitmap.Canvas.Pixels[Width - x - 1, Height - y - 1];
end;
Avatar billede hrc Mester
09. februar 2007 - 11:58 #2
procedure TfrmMain.btnTestClick(Sender: TObject);
var
  x, y : integer;
  TmpBitmap : TBitmap;
begin
  Screen.Cursor := crHourglass;
  try
    TmpBitmap := TBitmap.Create;
    try
      with Image.Picture do
      begin
        TmpBitmap.Width := Bitmap.Width;
        TmpBitmap.Height := Bitmap.Height;
        for x := 0 to Bitmap.Width - 1 do
          for y := 0 to Bitmap.Height - 1 do
            TmpBitmap.Canvas.Pixels[x,y] := Bitmap.Canvas.Pixels[Width - x - 1, Height - y - 1];
        Bitmap.Assign(TmpBitmap);
      end;
    finally
      TmpBitmap.Free;
    end;
  finally
    Screen.Cursor := crDefault;
  end;
end;
Avatar billede tolderlund Nybegynder
09. februar 2007 - 16:23 #3
At bruge Bitmap.Canvas.Pixels er meget langsomt.
Det er meget hurtigere at bruge Scanline. Se her:
http://homepages.borland.com/efg2lab/ImageProcessing/FlipReverseRotate.htm
Avatar billede hrc Mester
10. februar 2007 - 08:50 #4
Ja, hurtig er min rutine sgu ikke - tænkte nok at der var bedre løsninger.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester