AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Bitmaps skalieren

Ein Thema von omsec · begonnen am 5. Mai 2006 · letzter Beitrag vom 5. Mai 2006
Antwort Antwort
omsec

Registriert seit: 4. Mai 2006
Ort: Luzern
8 Beiträge
 
Delphi 2006 Architect
 
#1

Bitmaps skalieren

  Alt 5. Mai 2006, 12:05
Hallo
Durch zuweisen von Width/Height ändern sich ja die Abmessung einer Graphik. Leider wird dann aber das Bild nicht angepasst. Wie bekomme ich enen Zoom-Effekt hin ? Die Bilddaten liegen als TBitmap-Instanz vor.
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.757 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Bitmaps skalieren

  Alt 5. Mai 2006, 12:08
im OI stretch auf true setzen, dann passt sich das Bild der Imagekomponente an.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#3

Re: Bitmaps skalieren

  Alt 5. Mai 2006, 12:47
Male das Bitmap mit CopyRect() oder StretchBlt() auf das grössere Bitmap.
  Mit Zitat antworten Zitat
omsec

Registriert seit: 4. Mai 2006
Ort: Luzern
8 Beiträge
 
Delphi 2006 Architect
 
#4

Re: Bitmaps skalieren

  Alt 5. Mai 2006, 13:11
Nun ja, auf den Komfort einer TImage-Komponente muss ich verzichten, da ich mich im OnDrawCell-Handler eines DrawGrids befinde, dieser kennt ja nur den Canvas. Daher mein Hinweis auf die TBitmap-Instanz.

Mir ist allerdings nicht ganz klar, wie ich die BtretchBlt-Funktion in diesem Kontext anwenden muss.

Delphi-Quellcode:
procedure TForm1.DrawGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);

var
  bmp: TBitMap;
  
begin
// ShowMEssage('Col: ' + IntToStr(ACol) + ' Row: ' + IntToStr(ARow));
 bmp := TBitmap.Create;
 try
   if (ACol = 0) and (ARow = 0) then
     begin
       bmp.LoadFromFile('c:\temp\charset\1.bmp');
       StretchBlt ??? // Device Context = Handle der Form ?
     end;
   if (ACol = 1) and (ARow = 0) then
     bmp.LoadFromFile('c:\temp\charset\2.bmp');
   if (ACol = 2) and (ARow = 0) then
     bmp.LoadFromFile('c:\temp\charset\3.bmp');
   if (ACol = 3) and (ARow = 0) then
     bmp.LoadFromFile('c:\temp\charset\4.bmp');
   if (ACol = 4) and (ARow = 0) then
     bmp.LoadFromFile('c:\temp\charset\5.bmp');
 finally
   bmp.Free;
 end;
end;
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#5

Re: Bitmaps skalieren

  Alt 5. Mai 2006, 13:47
1. Grundlegend solltest du keine Bilder laden im Draw Handler - lade sie dir vorher und male sie dort nur noch!

2.
Delphi-Quellcode:
procedure TForm1.DrawGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  ARect: TRect; State: TGridDrawState);

var
  bmp: TBitMap;
 
begin
  // ShowMEssage('Col: ' + IntToStr(ACol) + ' Row: ' + IntToStr(ARow));
  bmp := TBitmap.Create;
  try
    If ( ARow = 0 ) And ( ACol In [0..4] ) Then
      bmp.LoadFromFile(Format('c:\temp\charset\%d.bmp', [Succ(ACol)]));

    If ( Not Bmp.Empty ) Then
    Begin
        // beachte, dass ich den Parameter "Rect" in "ARect" umbenannt habe!
      TDrawGrid(Sender).Canvas.CopyRect(ARect, Bmp.Canvas, Rect(0, 0, Bmp.Width, Bmp.Height));
    End;
  finally
    bmp.Free;
  end;
end;
  Mit Zitat antworten Zitat
Benutzerbild von Mackhack
Mackhack

Registriert seit: 29. Nov 2003
Ort: San Diego, CA/USA
1.446 Beiträge
 
Delphi 2006 Architect
 
#6

Re: Bitmaps skalieren

  Alt 5. Mai 2006, 15:43
//OT;
Fuer was steht eigentlich das Blt in StretchBlt?
Um etwas Neues zu schaffen muss man seine Ohren vor den Nein-sagern verschliessen um seinen Geist öffnen zu können.
(George Lukas)
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#7

Re: Bitmaps skalieren

  Alt 5. Mai 2006, 15:49
Blit

kommt vom Wort "blitting". Mehr dazu siehe Wikipedia: BitBlit

siehe auch der z.T. in Hardware ausgeführten Blitter - Einheit (Atari STE hatte einen, der Amiga 600 auch...)
  Mit Zitat antworten Zitat
Benutzerbild von Mackhack
Mackhack

Registriert seit: 29. Nov 2003
Ort: San Diego, CA/USA
1.446 Beiträge
 
Delphi 2006 Architect
 
#8

Re: Bitmaps skalieren

  Alt 5. Mai 2006, 15:53
Dank dir Muetze1... Informativ und wieder ne Frage weniger in meinem Kopf!
Um etwas Neues zu schaffen muss man seine Ohren vor den Nein-sagern verschliessen um seinen Geist öffnen zu können.
(George Lukas)
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#9

Re: Bitmaps skalieren

  Alt 5. Mai 2006, 15:56
Nachtrag:

BLIT = BLock Image Transfers
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:12 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz