Delphi-PRAXiS
Seite 3 von 4     123 4      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Gif bei verkleinerter Bildauflösung farblich stark veränder (https://www.delphipraxis.net/53287-gif-bei-verkleinerter-bildaufloesung-farblich-stark-veraender.html)

Hallo_Thomas 14. Sep 2005 16:24

Re: Gif bei verkleinerter Bildauflösung farblich stark verä
 
Zitat:

Zitat von Khabarakh
Etwas grundlegendes:
Bevor du dich mit der GR32-Lib beschäftigst, solltest du die Grundlagen der VCL-Komponenten verstanden haben. TImage und TImage32 sind beide kein Speicher für Bilder, sondern "nur" Controls, die ein Hier im Forum suchenOffScreenBitmap auf ihrer Canvas darstellen. Dieser Irrglaube wird z.B. dadurch unterstützt, dass die vermeintliche TImage-Canvas einfach die Canvas des TBitmaps ist, der Programmierer aber glaubt, er arbeite mit dem Image selbst. Das Speichermedium für Bitmaps ist also TBitmap bzw. TBitmap32, diese kannst du über TImage.Picture.Bitmap bzw. TImage32.Bitmap32 ansprechen, und diese musst du auch an die diversen Grafikroutinen (wie diese hier) übergeben.

Ich steh im moment wahrscheinlich etwas auf dem Schlauch, aber wie übergeb ich die?

Delphi-Freak 14. Sep 2005 16:30

Re: Gif bei verkleinerter Bildauflösung farblich stark verä
 
Wie ich schon geschrieben habe: Im OnCreate-Event nachdem du das Bild geladen hast:
Delphi-Quellcode:
CromaKey(Image321.Bitmap, $00FF00FF); //rosa soll transparent werden
Statt Image321 musst du ev. deinen eigenen Namen für das Bild einsetzen und den zweiten Parameter ggf. durch eine andere Farbe ersetzen.

Oder habe ich dich mit der Frage falsch verstanden :roll:

LG, ich

Hallo_Thomas 14. Sep 2005 22:47

Re: Gif bei verkleinerter Bildauflösung farblich stark verä
 
Liste der Anhänge anzeigen (Anzahl: 1)
Keine Ahnung, irgenwie klappts nicht, hab das unten reingeschriebenins Programm, hab das Bild mit der Farbe $00FF00FF eingefärgt und
es auch mit folgender Zeile probiert

Delphi-Quellcode:
P^ := C or $FF000000;bzw P^ := C or $00000000;
aber irgendwie klappt es nicht

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
CromaKey(Image321.Bitmap, $00FF00FF);
end;

Khabarakh 15. Sep 2005 12:01

Re: Gif bei verkleinerter Bildauflösung farblich stark verä
 
Delphi-Quellcode:
P^ := C or $00;
:gruebel: ? Der Code ist so, wie ich ihn gepostet habe, vollkommen richtig.

Aber was hast du eigentlich? Es klappt doch alles :mrgreen: . Man kann den Alphakanal bei einem einzelnen Bitmap lediglich nicht auf dem Bildschirm sehen. Siehe auch

Hallo_Thomas 15. Sep 2005 12:25

Re: Gif bei verkleinerter Bildauflösung farblich stark verä
 
Liste der Anhänge anzeigen (Anzahl: 1)
:oops: Das glaub ich Dir ja, :wall: nur schaff ich es irgendwie nich den Code so umzusetzen das mei Bildchen Transparent wird.


Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, GR32_Image,GR32;

type
  TForm1 = class(TForm)
    Image321: TImage32;
    procedure CromaKey(ABitmap: TBitmap32; TrColor: TColor32);
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.CromaKey(ABitmap: TBitmap32; TrColor: TColor32);
var
  P: PColor32;
  C: TColor32;
  I: Integer;
begin
  TrColor := TrColor and $00FFFFFF; // erase alpha, (just in case it has some)
  with ABitmap do
  begin
    P := PixelPtr[0, 0];
    for I := 0 to Width * Height - 1 do
    begin
      C := P^ and $00FFFFFF; // get RGB without alpha
      if C = TrColor then // is this pixel "transparent"?
        P^ := C; // write RGB with "transparent" alpha back into the SrcBitmap
      Inc(P); // proceed to the next pixel
    end;
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 CromaKey(Image321.Bitmap, $00FF00FF);
end;

end.

Hallo_Thomas 15. Sep 2005 12:50

Re: Gif bei verkleinerter Bildauflösung farblich stark verä
 
@Khabarakh
Das "GR32 Extension Control Pack" find ich, alles was sich bei dem Link bei mir aufmacht ist der Microsoft Outlook Newsreader, der hat dann 5000 nachrichten bei mir reinkopiert , a 1 KB, irgendwie find ichs nichts.

Khabarakh 15. Sep 2005 13:03

Re: Gif bei verkleinerter Bildauflösung farblich stark verä
 
Wie gesagt, dein Code ist zu 100% in Ordnung, allen Pixeln wird der korrekte Alphawert zugewiesen.
Das Control-Pack findest du unter "19.6.2005", aber ich habe es nicht fertig gebracht, es zu installieren :stupid: (ist auch noch Alpha). Einfachere Lösung: Das Bitmap auf den bekannten Phtoshop-Grau-Weiß-gekachelten Hintergund kopieren. Warum willst du dir die Transparenz denn überhaupt anzeigen lassen, es geht doch nur ums Verkleinern der Grafik?

Hallo_Thomas 15. Sep 2005 15:24

Re: Gif bei verkleinerter Bildauflösung farblich stark verä
 
Liste der Anhänge anzeigen (Anzahl: 1)
Was mache ich dann verkehrt, das Bild, das rosa müsste doch weg sein!(Siehe Bild)

Khabarakh 15. Sep 2005 18:14

Re: Gif bei verkleinerter Bildauflösung farblich stark verä
 
Wie gesagt, TImage32 blendet das Bitmap nicht mit dem Hintergrund, du siehst also auch die voll transparenten Stellen! Die Pixel haben den richtigen Alphawert, er wird nur beim Anzeigen ignoriert. Kannst du bitte genau beschreiben, was dein letztendliches Ziel ist? Dann könnte ich dir besser helfen.

Hallo_Thomas 15. Sep 2005 18:33

Re: Gif bei verkleinerter Bildauflösung farblich stark verä
 
Ziel von mir ist es ein TImage32 Bild transparent darzustellen, also in dem Fall sollte während der Laufzeit(von mir aus auch eher), das rosa nicht zu sehen sein.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:53 Uhr.
Seite 3 von 4     123 4      

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