Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Eine 3D-Buttongrafik mittels 2D-Technik (https://www.delphipraxis.net/39921-eine-3d-buttongrafik-mittels-2d-technik.html)

torud 23. Feb 2005 15:48

Re: Eine 3D-Buttongrafik mittels 2D-Technik
 
Hallo!

Danke für den Tipp.

Leider war nichts mit GBlur zu finden in der Suchfunktion!
Habe ich was falsches eingegeben???

Khabarakh 23. Feb 2005 19:47

Re: Eine 3D-Buttongrafik mittels 2D-Technik
 
Zitat:

Zitat von torud
Hallo!

Danke für den Tipp.

Leider war nichts mit GBlur zu finden in der Suchfunktion!
Habe ich was falsches eingegeben???

Gut, es steht immer nur Blureffekt da, aber so viele Multimedia CodeLib-Einträge gibt es doch eigentlich nicht :wink: .
http://www.delphipraxis.net/internal...ct.php?t=24623

torud 24. Feb 2005 09:02

Re: Eine 3D-Buttongrafik mittels 2D-Technik
 
OK, vielen Dank!

Bleibt mir noch unklar, wie ich die 3 Bilder miteinander verschmelzen kann!???

werde aber mal wieder die suchfunktion bedienen!

Khabarakh 24. Feb 2005 14:59

Re: Eine 3D-Buttongrafik mittels 2D-Technik
 
Wenn es keine geeignete Einstellungen von BitBlt gibt, wirst du wohl oder übel eine eigene Prozedur über Scanline schreiben müssen.
Ein Beispiel für Textur + Schatten:
Delphi-Quellcode:
procedure foo(bSource, bDest: TBitmap); //Der Schatten ist die Quelle, die Textur das Ziel
var pSource, pDest: PRGBQuad;
begin
  bSource.PixelFormat:=pf32bit;
  bDest.PixelFormat:=pf32bit;
  [...]
      pDest^.rgbtRed:=pDest^.rgbtRed-(255-pSource^.rgbtRed);
      pDest^.rgbtBlue:= [...]
  //  Wenn der Pixel in der Schatten-Bitmap weiß ist, wird an bSource nichts verändert, sonst eben dunkler
end;

torud 24. Feb 2005 16:29

Re: Eine 3D-Buttongrafik mittels 2D-Technik
 
Hallo Sebastian!

Also Text mit Schatten habe ich nun schon so gelöst:

Delphi-Quellcode:
          Image3.Canvas.Font := Schatten.Font;
          Image3.Canvas.Brush.Style := bsClear;
          Image3.Canvas.TextOut(24 , 7, ed_text.Text);
          BmpGBlur(Image3.Picture.Bitmap,3);

          Image3.Canvas.Font := FontDialog1.Font;
          Image3.Canvas.Brush.Style := bsClear;
          Image3.Canvas.TextOut(22 , 6, ed_text.Text);

          BmpGBlur(Image3.Picture.Bitmap,0.05);
Ist erstmal nur ein statischer Test gewesen, sah aber im Ergebnis nicht schlecht aus!

Irgendwie sehen aber meine Buttons noch zu Flach aus!

Khabarakh 24. Feb 2005 19:04

Re: Eine 3D-Buttongrafik mittels 2D-Technik
 
Ich hatte eigentlich die Buttontextur an sich (oder eben einfach ne einfarbige fläche) + die Schattierungen am Rand des Buttons (für den Tiefeneffekt) gemeint :wink: .

torud 24. Feb 2005 19:59

Re: Eine 3D-Buttongrafik mittels 2D-Technik
 
Ups!

Na wenn das nicht ein klassisches Mißverständnis war...

Also so richtig verstanden habe ich das noch nicht, wie das zum Einsatz, kommt, werde es mir aber mal ansehen und etwas damit "experimentieren", vermute aber, dass ich in ein TImage ein Graik laden soll, oder in ein Bitmap, wie auch immer und dann deine Procedure darauf anwenden soll.

Mal sehen, wie weit ich komme...vielen Dank...

torud 24. Feb 2005 21:54

Re: Eine 3D-Buttongrafik mittels 2D-Technik
 
Hi Sebastian!

Also ich habe mal Deinen Code probiert, bin aber leider gescheitert.

Delphi-Quellcode:
procedure foo(bSource, bDest: TBitmap); //Der Schatten ist die Quelle, die Textur das Ziel
var pSource, pDest: PRGBQuad;
begin
  bSource.PixelFormat:=pf32bit;
  bDest.PixelFormat:=pf32bit;

      pDest^.rgbRed := pDest^.rgbRed-(255-pSource^.rgbRed);
      pDest^.rgbBlue := pDest^.rgbBlue-(255-pSource^.rgbBlue);
      pDest^.rgbGreen := pDest^.rgbGreen-(255-pSource^.rgbGreen);
  //  Wenn der Pixel in der Schatten-Bitmap weiß ist, wird an bSource nichts verändert, sonst eben dunkler
end;
Also ich habe Deine Prozedur nun etwas vervollständigt. Sollte bestimmt eine kleine Aufgabe für mich sein. Ich rufe nun diese Prozedure wie folgt auf.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
    MyBit:TBitmap;
begin
    myBit:=TBitmap.Create;
    MyBit.Assign(Image.Picture.Graphic);
        foo(MyBit,Image1.Picture.Bitmap);
end;
In Image befindet sich ein Jpeg, deshalb weise ich es vorher noch einem Bitmap zu. Allerdings tut sich in dest - dem Image1 nichts. Wie auch. Ich glaube, dass in der foo-procedure noch nichts zurückgeschrieben wird. Oder??? Kannst Du noch etwas helfen?

Khabarakh 25. Feb 2005 19:42

Re: Eine 3D-Buttongrafik mittels 2D-Technik
 
Du solltest dir mal ein Tutorial über Pointer und Scanline suchen. Am Anfang hat das geklungen, als ob du eine eigene Render-Engine zusammenbauen wolltest, deahlb habe ich gedacht, ScanLine wäre kein Problem :wink: .
Schon länger nichts mehr mit ScanLine gemacht, das sollte es aber sein:
Delphi-Quellcode:
procedure foo(bSource, bDest: TBitmap); //Der Schatten ist die Quelle, die Textur das Ziel
var pSource, pDest: PRGBQuad;
    x, y: Integer;
begin
  bSource.PixelFormat:=pf32bit;
  bDest.PixelFormat:=pf32bit;
  for y:=0 to bDest.Height-1 do
  begin
    pSource:=bSource.Scanline[y];
    pDest:=bDest.Scanline[y];
    for x:=0 to Bitmap.Width-1 do
    begin
      pDest^.rgbRed := pDest^.rgbRed-(255-pSource^.rgbRed);
      pDest^.rgbBlue := pDest^.rgbBlue-(255-pSource^.rgbBlue);
      pDest^.rgbGreen := pDest^.rgbGreen-(255-pSource^.rgbGreen);
      //  Wenn der Pixel in der Schatten-Bitmap weiß ist, wird an bSource nichts verändert, sonst eben dunkler
      Inc(pDest);
      Inc(pSource)
    end
  end
end;

torud 25. Feb 2005 21:09

Re: Eine 3D-Buttongrafik mittels 2D-Technik
 
Hallo Sebastian!

Also ich bin leider kein Experter mit BitBlt und Scanline!
Das mit dem Tut zu diesem Thema ist keine schlechte Idee.

Naja ich denke, dass wir uns da wohl etwas missverstnanden haben. Eine eigene Engine wäre wohl für meinen Kenntnisstand etwas zu hochgegriffen. Ich würde mir zwar gern einen eigenen Button-Creator erstellen, aber ich denke, dass ich da wohl weiter davon entfernt bin, als mir lieb ist und ich habe in nunmehr 3 Foren keine Infos erhalten, wie ich ein solches Tool, wie es z.B. Crystal-Button, mit verstehbaren Mitteln erstellen kann.

Und was die foo-procedure angeht. Die tuts nun. Was auch immer sie machen soll, sie macht nicht das, wovon ich dachte, dass sie es tun würde...alles bleibt flach...danke ciao


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:34 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz