Pagina1 van 1
Forum

Welkom bij de Tweaking4All gemeenschapsforums!
Voor je gaat deelnemen, bekijk de Forum Regels!

Specifieke onderwerpen: Start het onderwerp met de naam van het programma of systeem.
Bijvoorbeeld “MacOS X – Jouw vraag“, of bijvoorbeeld “MS Word – Jouw Tip of Truc“.

Merk op: Omschakelen naar een andere taal zal niet werken als je een post aan het lezen bent aangezien er waarschijnlijk geen vertaling beschikbaar is.



Deel:
Meldingen
Alles wissen

[Opgelost] Delphi/Lazarus - Rotateer TBitmap 180 graden

1 Berichten
1 Gebruikers
0 Reactions
1,586 Bekeken
 Hans
(@hans)
Famed Member Admin
Deelgenomen: 12 jaar geleden
Berichten: 2864
Topic starter  

De volgende procedure draait een TBitmap 180 graden:

procedure Rotate180(Bitmap:TBitmap);
type
TRGBArray = array[0..0] of TRGBTriple;
pRGBArray = ^TRGBArray;
var
countRows, countColumns: integer;
rowIn,rowOut:
pRGBArray;
tmpBitmap: TBitmap;
begin
// Create tmp bitmap
tmpBitmap:=TBitmap.Create;
// Adjust tmp bitmap size and pixelformat
with tmpBitmap do
begin
Width:=Bitmap.Width;
Height:=Bitmap.Height;
PixelFormat:=Bitmap.PixelFormat;
end;
// Use scanline to copy pixels from rowin to rowout in reverse order
for countRows:=0to Bitmap.Height-1 do
begin
rowIn:=Bitmap.ScanLine[countRows];
rowOut:=tmpBitmap.ScanLine[Bitmap.Height-countRows-1];
for countColumns:=0 to Bitmap.Width-1 do
rowOut[Bitmap.Width-countColumns-1]:=rowIn[countColumns];
end;
// Copy bitmap to source and free tmp bitmap
bitmap.assign(tmpBitmap);
tmpBitmap.free;
end;


   
BeantwoordenCiteren
Deel: