AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Bildeffekt in Delphi nachbauen
Thema durchsuchen
Ansicht
Themen-Optionen

Bildeffekt in Delphi nachbauen

Ein Thema von Absturzkreatur · begonnen am 5. Sep 2008 · letzter Beitrag vom 7. Sep 2008
Antwort Antwort
Absturzkreatur

Registriert seit: 5. Sep 2008
8 Beiträge
 
#1

Bildeffekt in Delphi nachbauen

  Alt 5. Sep 2008, 17:36
Eins vorweg: Ich weiß, dass der Titel präziser sein sollte. Jedoch habe ich nicht gewusst, wie ich den Effekt des Bildes genau beschreiben soll.

Ich habe etwas im Internet gesurft und habe einen Effekt an den Rändern eines Bildes gesehen, der total cool ist. Da er schwer zu beschreiben ist, habe ich einen Ausschnitt des Bildes drangehängt.

http://members.aon.at/rbraunsb/tmp/Fragestellung.JPG

Jedenfalls würde ich gerne den Effekt nachbauen, jedoch ist meine Pixels[]-Lösung äußerst langsam.

Es wäre schön, wenn mir jemand bei meinem Problem helfen könnte.

Vielen Dank im Vorraus,

Absturzkreatur
  Mit Zitat antworten Zitat
Prototypjack

Registriert seit: 2. Feb 2003
611 Beiträge
 
Delphi 2009 Professional
 
#2

Re: Bildeffekt in Delphi nachbauen

  Alt 5. Sep 2008, 19:01
Moin,

Ehrlich gesagt wäre es vielleicht hilfreich, wenn du beschreiben würdest, was genau du haben willst. Denn ich persönlich kann aus dem Bild keine speziellen Muster oder Effekte entnehmen.

Grüße,
Max
Max
„If you have any great suggestions, feel free to mail me, and I'll probably feel free to ignore you.“ . Linus Torvalds
  Mit Zitat antworten Zitat
BullsEye

Registriert seit: 8. Sep 2007
Ort: Werlte
872 Beiträge
 
Delphi 7 Personal
 
#3

Re: Bildeffekt in Delphi nachbauen

  Alt 5. Sep 2008, 19:07
Ich denke mal, du meinst das das Bild weiß umrandet ist....

Füg das Bild doch bitte in den Anhang ein, ersparste den Mods nen bissel Arbeit
  Mit Zitat antworten Zitat
Absturzkreatur

Registriert seit: 5. Sep 2008
8 Beiträge
 
#4

Re: Bildeffekt in Delphi nachbauen

  Alt 5. Sep 2008, 19:12
Zitat von BullsEye:
Ich denke mal, du meinst das das Bild weiß umrandet ist....

Genau! Diese weiße Umrandung, die mit dem eigentlichen Bild etwas verschwimmt. Es wäre echt super, wenn mir geholfen werden könnte.

Vielen Dank nochmals
  Mit Zitat antworten Zitat
Torpedo

Registriert seit: 21. Dez 2003
410 Beiträge
 
#5

Re: Bildeffekt in Delphi nachbauen

  Alt 5. Sep 2008, 21:14
Da würde es wohl reichen einfach ein Bild der Umrandung auf das eigentliche Bild draufzumalen. Und dieses Rand-Bild hat eben an gewissen stellen Transparente pixel (da wo man das Bild sehen soll) oder halbtransparente (wo es verschmwimmt) bzw. beliebig transparent (Verlauf).
Kurz:
Bild + Randbild(PNG mit transparenz) = Zielbild

Problem wären die verschiedenen größen von Bildern.
  Mit Zitat antworten Zitat
BullsEye

Registriert seit: 8. Sep 2007
Ort: Werlte
872 Beiträge
 
Delphi 7 Personal
 
#6

Re: Bildeffekt in Delphi nachbauen

  Alt 5. Sep 2008, 22:43
Zitat von Torpedo:
Problem wären die verschiedenen größen von Bildern.
Man könnte das Bild automatisch anpassen. Würde aber ggf Qulitätsverluste übelsten grades geben.
Eine andere Möglichkeit wäre doch:

- Bild laden
- Größe messen
- 'Weiße Wolken' vom Rand aus zeichen
- Screenshot vom Bild machen und das als Ausgabe speichern..


Hätte den Vorteil, das man auch einstellen könnte wie stark der Rand sein soll...
  Mit Zitat antworten Zitat
Absturzkreatur

Registriert seit: 5. Sep 2008
8 Beiträge
 
#7

Re: Bildeffekt in Delphi nachbauen

  Alt 6. Sep 2008, 20:24
Vielen Dank für die schnellen Hilfen.

In der Zwischenzeit habe ich mich auch natürlich noch auf die Suche nach Lösungen gemacht und eine "Halblösung" gefunden.

In diesem coolen Forum habe ich die Funktion "DrawFrostedGlass" gefunden (www.delphipraxis.net/topic11274.html). Diese habe ich etwas modifiziert und es funktioniert eigentlich schon sehr gut.

Hier der Quelltext:

Delphi-Quellcode:
procedure TForm1.FormClick(Sender: TObject);
var blending, i: Byte;
begin
blending := 250;
for i := 0 to 25 do begin
 Rechteck := Rect(0, 100 + i, Width, 102 + i);
 blending := blending - 10;
 DrawFrostedGlass(Image1.Picture.Bitmap, Rechteck, 16777215, blending);
end;
end;

procedure SplitColorToRGB(const Color: TColor; var r, g, b: Byte);
begin
  r := ColorToRGB(Color) and $0000FF;
  g := (ColorToRGB(Color) and $00FF00) shr 8;
  b := (ColorToRGB(Color) and $FF0000) shr 16;
end;

function RGBToColor(const r, g, b: Byte): TColor;
begin
  Result := TColor(r + (g shl 8) + (b shl 16));
end;

function CalcBlending(const Source, Back, Alpha: Byte): Byte;
begin
  Result := Back + ((Source - Back) * Alpha div 255);
end;

procedure TForm1.DrawFrostedGlass(Bitmap: TBitmap; GlassRect: TRect; const Milk: TColor = clWhite; Alpha: Byte = 128);
var r, g, b: Byte;
    x, y: Integer;
    P: PByteArray;
begin
  with Bitmap.Canvas, Bitmap.Canvas.Pen do begin
    Color := Milk;
    Brush.Style := bsClear;
    rectangle(0, 0, 0, 0); //warum das hier stehen muss, damit der Effekt gezeichnet
                          // wird, verstehe ich auch nicht
  end;

  Bitmap.PixelFormat := pf24Bit;
  GlassRect.Left := (GlassRect.Left * 3) + 3;
  GlassRect.Right := (GlassRect.Right * 3) - 3;
  SplitColorToRGB(Milk, r, g, b);

  for y := GlassRect.Top + 1 to GlassRect.Bottom - 1 do
  begin
    P := Bitmap.ScanLine[y];
    x := GlassRect.Left;
    repeat
      P[x+0] := CalcBlending(P[x+0], r, Alpha);
      P[x+1] := CalcBlending(P[x+1], g, Alpha);
      P[x+2] := CalcBlending(P[x+2], b, Alpha);
      Inc(x, 3);
    until x >= GlassRect.Right;
  end;
end;
Soweit, so gut. Ich habe aber noch ein Problem: Dieser Effekte sollte ovalförmig um das Bild gezeichnet werden. Da ich nun endgültig keinen Plan mehr habe, wie das gehen könnte, bin ich wieder auf eure Hilfe angewiesen.

Vielen Dank
  Mit Zitat antworten Zitat
BullsEye

Registriert seit: 8. Sep 2007
Ort: Werlte
872 Beiträge
 
Delphi 7 Personal
 
#8

Re: Bildeffekt in Delphi nachbauen

  Alt 7. Sep 2008, 10:11
Delphi-Quellcode:
if SetWindowRgn(Handle, CreateEllipticRgn(0, 0, Width, Height), True) = 0 then
    RaiseLastOSError;
Hiermit kann man eine Elipse zeichnen, es gilt zumind für das Formular, aber vllt kannst du es ja irgendwie an dein Projekt anbinden
  Mit Zitat antworten Zitat
Benutzerbild von Garfield
Garfield

Registriert seit: 9. Jul 2004
Ort: Aken (Anhalt-Bitterfeld)
1.334 Beiträge
 
Delphi XE5 Professional
 
#9

Re: Bildeffekt in Delphi nachbauen

  Alt 7. Sep 2008, 10:24
Vielleicht hilft das auch: http://www.efg2.com/Lab/ImageProcessing/Feathering.htm
Gruss Garfield
Ubuntu 22.04: Laz2.2.2/FPC3.2.2 - VirtBox6.1+W10: D7PE, DXE5Prof
  Mit Zitat antworten Zitat
Absturzkreatur

Registriert seit: 5. Sep 2008
8 Beiträge
 
#10

Re: Bildeffekt in Delphi nachbauen

  Alt 7. Sep 2008, 14:59
OMG! Der Link zu "Feathering" ist der absolute Hammer! Vielen Dank. Das dortige Progg übertrifft alle meine Erwartungen!

Vielen Dank nochmals, ihr habt es echt voll drauf! Zwar werde ich noch einige Tage davorsitzen, und die wesentlichen von den unwesentlichen Codes auseinandertüfteln, aber mit Sicherheit lerne ich dabei noch einiges in Delphi (was definitiv nicht schwer sein wird).

Danke BullsEye, Torpedo, Prototypjack und zuguterletzt Garfield.
  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 21:58 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