AGB  ·  Datenschutz  ·  Impressum  







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

Was für ne scharfe Auswahlleiste

Ein Thema von Jelly · begonnen am 13. Jul 2007 · letzter Beitrag vom 19. Jul 2007
Antwort Antwort
Seite 3 von 4     123 4      
Ghostwalker

Registriert seit: 16. Jun 2003
Ort: Schönwald
1.299 Beiträge
 
Delphi 10.3 Rio
 
#21

Re: Was für ne scharfe Auswahlleiste

  Alt 16. Jul 2007, 12:14
ok...mit .NET 3 tuts.
Uwe
e=mc² or energy = milk * coffee²
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#22

Re: Was für ne scharfe Auswahlleiste

  Alt 16. Jul 2007, 21:05
Zurück zur eigentlichen Delphi Frage.
Ich habe jetzt diesen Code von Jens angekuckt, und damit lässt sich schon bischen was anfangen.

Nur krieg ich damit keinen progressive Erhöhung der Transparenz nach rechts hin... Wie könnte man denn da den Code anpassen ?
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#23

Re: Was für ne scharfe Auswahlleiste

  Alt 16. Jul 2007, 23:53
dafür muss
LBlendFunc.AlphaFormat := 0; zu
LBlendFunc.AlphaFormat := AC_SRC_ALPHA; werden. Das Bitmap muss dann natürlich auch 32bit Farbtiefe haben.
Es kann sein das Windows dabei noch irgendwas verbockt. Ich schau mir das mal an und poste notfalls noch meine eigene Routine (wobei die auch fix zusammengetippt ist).
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#24

Re: Was für ne scharfe Auswahlleiste

  Alt 17. Jul 2007, 08:55
Da die Windows-Funktion einem das Leben schwer macht in dem sie auch den Alphakanal des Ziel-HDC berücksichtig hab ich mal eine eigene Funktion geschrieben:
Delphi-Quellcode:
procedure BitBltAlpha(DestDC: HDC; X, Y, Width, Height: Integer; SrcBmp: TBitmap; XSrc, YSrc: Integer);
var
  lDst : TBitmap;
  lPixelDst,
  lPixelSrc : PRGBQuad;
  lCountX,
  lCountY : Integer;
  lAlphaNeg : Byte;
begin
  if (SrcBmp.PixelFormat <> pf32bit) then
    BitBlt(DestDC, X, Y, Width, Height, SrcBmp.Canvas.Handle, XSrc, YSrc, SRCCOPY)
  else
  begin
    if (Width > SrcBmp.Width) then
      Width := SrcBmp.Width;
    if (Height > SrcBmp.Height) then
      Height := SrcBmp.Height;
    lDst := TBitmap.Create();
    lDst.PixelFormat := pf32bit;
    lDst.SetSize(Width, Height);
    BitBlt(lDst.Canvas.Handle, 0, 0, Width, Height, DestDC, X, Y, SRCCOPY);

    lPixelSrc := SrcBmp.ScanLine[SrcBmp.Height - 1];
    lPixelDst := lDst.ScanLine[lDst.Height - 1];
    for lCountY := lDst.Height - 1 downto 0 do
    begin
      for lCountX := lDst.Width - 1 downto 0 do
      begin
        lAlphaNeg := not(lPixelSrc.rgbReserved);
        lPixelDst.rgbBlue := ((lPixelSrc.rgbBlue * lPixelSrc.rgbReserved) + (lPixelDst.rgbBlue * lAlphaNeg)) div 255;
        lPixelDst.rgbGreen := ((lPixelSrc.rgbGreen * lPixelSrc.rgbReserved) + (lPixelDst.rgbGreen * lAlphaNeg)) div 255;
        lPixelDst.rgbRed := ((lPixelSrc.rgbRed * lPixelSrc.rgbReserved) + (lPixelDst.rgbRed * lAlphaNeg)) div 255;
        inc(lPixelDst);
        inc(lPixelSrc);
      end;
    end;
    BitBlt(DestDC, X, Y, Width, Height, lDst.Canvas.Handle, 0, 0, SRCCOPY);
    lDst.Free;
  end;
end;
Die Funktion ist wie die Funktion BitBlt zu nutzen. Anstelle eine Src-HDC übergibt man ein Src-Bitmap. Wenn dieses eine Farbtiefe von 32bit hat wird der Alphakanal beim blitten berücksichtigt.
Miniaturansicht angehängter Grafiken
screenshot_431.jpg  
Angehängte Dateien
Dateityp: zip alphademo_140.zip (385,8 KB, 50x aufgerufen)
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
OregonGhost

Registriert seit: 8. Jun 2002
Ort: Lübeck
1.216 Beiträge
 
Delphi 3 Professional
 
#25

Re: Was für ne scharfe Auswahlleiste

  Alt 17. Jul 2007, 09:26
Zitat:
# Es wird nur in Hardware rendert wenn du eine DX9 Karte mit Pixelshader 2.0 hast, auch wenn das gar nicht notwendig gewesen wäre. (gilt ebenfalls für Aero in Vista)
Das gilt aber doch nur für Effekte, die Tier 2 benötigen, oder? Also z.B. radiale Farbverläufe. Alle einfacheren Sachen sollten auch mit Tier 1 funktionieren (mal abgesehen davon, dass man Karten unter SM3 eigentlich kaum noch bekommt, Tier 1 ist alles ab Radeon256 / Geforce256, Tier 2 ab Radeon 9500 / GeForce 5).
Und aus der Tier-1-Liste:
Zitat:
Most 2D rendering is supported. [...]
Most 3D rasterization is supported. [...]
On Windows Vista, layered windows are hardware accelerated.
Also nicht ganz so schlimm.
Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#26

Re: Was für ne scharfe Auswahlleiste

  Alt 17. Jul 2007, 17:02
Ganz herzlichen Dank, Jens. Damit kann ich doch was anfangen. Werde wohl die Tage mich ransetzen, damit eine Delphi Komponente zu schreiben, denn solch eine Select-Liste macht sich einfach nur genial.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#27

Re: Was für ne scharfe Auswahlleiste

  Alt 17. Jul 2007, 17:19
Zitat von Jelly:
Werde wohl die Tage mich ransetzen, damit eine Delphi Komponente zu schreiben
Würdest Du die auch hier veröffentlichen? Da hängt zwar nicht mein Leben daran, aber es sieht wirklich nett aus, das muss ich zugeben.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#28

Re: Was für ne scharfe Auswahlleiste

  Alt 17. Jul 2007, 17:56
So war das schon gedacht, zumal der Verdienst ja nicht dann mir gilt sondern dem Jens.

Aber mal noch eine Frage... Mit welchem Programm kann ich denn eine 32bit Bitmap erzeugen. Meine Palette reicht von Paint, Paint.NET bis hin zu Macromedia Fireworks, und die können alle nur bis 24bit.
  Mit Zitat antworten Zitat
Benutzerbild von lbccaleb
lbccaleb

Registriert seit: 25. Mai 2006
Ort: Rostock / Bremen
2.037 Beiträge
 
Delphi 7 Enterprise
 
#29

Re: Was für ne scharfe Auswahlleiste

  Alt 17. Jul 2007, 19:08
Zitat von dominikkv:
Zitat von Jelly:
(Das linke Menü ist kein Problem, dafür hätte ich eine Komponente.)
welche

auch dafür kann man die komponente raize components benutzen, leider ist die kostenpflichtig, gibt aber ne trial version...

ztu downen @raize components
Martin
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#30

Re: Was für ne scharfe Auswahlleiste

  Alt 17. Jul 2007, 19:27
Zitat von Jelly:
Aber mal noch eine Frage... Mit welchem Programm kann ich denn eine 32bit Bitmap erzeugen. Meine Palette reicht von Paint, Paint.NET bis hin zu Macromedia Fireworks, und die können alle nur bis 24bit.
Sowohl Paint.Net als auch Gimp besitzen Alpha-Channel-(und damit natürlich auch PNG-)Support, auch wenn mir bei beiden die Möglichkeit fehlt, den Alphakanal direkt zu bearbeiten (wie es bei PSP möglich war/ist) - vielleicht habe ich ihn auch nur noch nicht entdeckt .
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      


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 13:06 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