![]() |
Was für ne scharfe Auswahlleiste
Liste der Anhänge anzeigen (Anzahl: 1)
In einem ganz anderem Thread, nämlich in
![]() Was mir daran so besonders gefällt, ist das beim Drüberbewegen der Maus, die Transparenz der Markierung nach rechts hin zunimmt, so dass am Rand sogar der Hintergrund komplett durchleuchtet. Kennt jemand eine solche Komponente für Delphi. Ich hab die TMS Component Pack. Dort sind paar hundert Komponenten drin, aber nichts in der Richtung, es sei ich wär blind. |
Re: Was für ne scharfe Auswahlleiste
eigentlich sollte das selbst programmieren kein Problem weiter sein. Die Markierung wird einfach nur ein Bild mit Alphamaske sein. Und nach Rechts hinn ist die Alphamaske eben transparenter.
|
Re: Was für ne scharfe Auswahlleiste
Moin,
Stimmt, das Ding sieht tatsächlich nicht schlecht aus ;) Wenn ich gezwungen wäre sowas zu bauen, würde ich (weil ich es für sehr unwahrscheinlich halte, dass es sowas bereits gibt), wohl auf das gute alte Virtual Treeview von ![]()
Ich hoffe ich konnte ein bisschen weiterhelfen! Grüße, Max (Natürlich kannst du das ganze auch leicht selbst basteln, aber dann ist es nicht mehr so allgemein, wobei man die Lösung per Virtual Treeview ohne, bzw. mit wenigen Änderungen, wiederverwenden könnte!) |
Re: Was für ne scharfe Auswahlleiste
so kompliziert würde ich es mir gar nicht machen. Um es richtig flexibel zu halten braucht man nur die Markierung als Komponenten programmieren. Sobald sich dann die Maus über der Komponente befindet braucht man einfach nur ein zuvor zugewiesenes Bild (mit Alphakanal) einblenden, ansonsten einfach gar nix zeichnen.
|
Re: Was für ne scharfe Auswahlleiste
Der Linke Teil wurde mit JVCL-Komponenten erstellt - ev. auch der Rechte Menüteil?
|
Re: Was für ne scharfe Auswahlleiste
Alphamasken ist ja schön und gut. Nur hab ich keinen blassen Schimmer wie ich sowas angehen könnte.
(Das linke Menü ist kein Problem, dafür hätte ich eine Komponente.) |
Re: Was für ne scharfe Auswahlleiste
mit der Funktion AlphaBlend aus der Unit Windows geht es eigentlich.
|
Re: Was für ne scharfe Auswahlleiste
Um ein PNG zu laden, kannst du
![]() PS: Normalerweise halte ich mich mit solchen Kommentaren zurück, da sie meist nicht so wirklich weiterhelfen, aber da ich weiß, dass du mit C# programmierst (programmiert hast?), muss ich es einfach erwähnen: Mit WPF könnte man so ein Ding in 5 Minuten from scratch entwickeln, ohne eine Zeile Code geschrieben oder irgendein Bildbearbeitungsprogramm geöffnet zu haben. |
Re: Was für ne scharfe Auswahlleiste
Zitat:
Zitat:
|
Re: Was für ne scharfe Auswahlleiste
Liste der Anhänge anzeigen (Anzahl: 2)
Zitat:
Die einzelnen Schritte in Kurzfassung:
Zu näheren Erklärungen stehe ich gerne bereit, WPF ist nicht gerade ein auf den ersten Blick erfassbares Gebiet. |
Re: Was für ne scharfe Auswahlleiste
Das sieht doch echt klasse aus :thumb:
Das mit dem .NET 3.0 stört mich etwas. Kann ich das im VS 2005 nutzen, in einem Projekt parallel zu .NET 2.0? |
Re: Was für ne scharfe Auswahlleiste
Zitat:
Du kannst das einfach so im Studio öffnen wenn du 3.0 installiert hast. Als Designer kann man die .Net 3.0 Extensions für VS sowieso nehmen, sich kaputt lachen und wegschmeißen. Klarabella (:mrgreen:) hat ![]() Nachtrag: WPF/Avalon hat ein paar signifikante Nachteile, die man nicht vergessen sollte:
|
Re: Was für ne scharfe Auswahlleiste
Zitat:
|
Re: Was für ne scharfe Auswahlleiste
Ich muss sagen, dass ich weder den Designer im VS noch Expression Blend wirklich toll finde. Ich schreib den XAML Code inzwischen fast vollständig selber. Das ist irgendwie wie bei HTML und die ganzen WYSIWYG-Editoren: Für einfache Sachen geht's schneller, aber irgendwann stößt's an seine Grenzen.
|
Re: Was für ne scharfe Auswahlleiste
Zitat:
OTOH, XAML ist mit der Möglichkeit für Code completion durch ein XSD im Hinterkopf entwickelt wurden. Es ist also noch einfacher zu tippen als xHTML. |
Re: Was für ne scharfe Auswahlleiste
Zitat:
Zitat:
[*]Ein Fix existiert seit kurzer Zeit, aber Microsoft rät natürlich von der Installation ab - Vista will sich schließlich verkaufen. |
Re: Was für ne scharfe Auswahlleiste
Nun ja... Mit all den Einschränkungen hilft mir das für die Arbeit nicht wirkich weiter. Die Applikation muss auf 800 PCs laufen, da kann ich also nicht davon ausgehen dass überall die neuste Hardware drin ist. Schade eigentlich.
@dominikkv: Zum linken Menü... Da ist was bei den TMS dabei. |
Re: Was für ne scharfe Auswahlleiste
Zitat:
|
Re: Was für ne scharfe Auswahlleiste
@Khabarakh
Hab mir dein Programm mal runtergeladen...lüpt nicht auf meinem XP SP2-System. Faselt irgendwas von System.IO.FileNotFound. |
Re: Was für ne scharfe Auswahlleiste
haste auch .NET 3.0?
|
Re: Was für ne scharfe Auswahlleiste
ok...mit .NET 3 tuts.
|
Re: Was für ne scharfe Auswahlleiste
Zurück zur eigentlichen Delphi Frage.
Ich habe jetzt ![]() Nur krieg ich damit keinen progressive Erhöhung der Transparenz nach rechts hin... Wie könnte man denn da den Code anpassen ? |
Re: Was für ne scharfe Auswahlleiste
dafür muss
Delphi-Quellcode:
zu
LBlendFunc.AlphaFormat := 0;
Delphi-Quellcode:
werden. Das Bitmap muss dann natürlich auch 32bit Farbtiefe haben.
LBlendFunc.AlphaFormat := AC_SRC_ALPHA;
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). |
Re: Was für ne scharfe Auswahlleiste
Liste der Anhänge anzeigen (Anzahl: 2)
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:
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.
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; |
Re: Was für ne scharfe Auswahlleiste
Zitat:
Und aus der Tier-1-Liste: Zitat:
|
Re: Was für ne scharfe Auswahlleiste
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.
|
Re: Was für ne scharfe Auswahlleiste
Zitat:
|
Re: Was für ne scharfe Auswahlleiste
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. |
Re: Was für ne scharfe Auswahlleiste
Zitat:
auch dafür kann man die komponente raize components benutzen, leider ist die kostenpflichtig, gibt aber ne trial version... ztu downen @ ![]() |
Re: Was für ne scharfe Auswahlleiste
Zitat:
|
Re: Was für ne scharfe Auswahlleiste
ich mal die Bilder in Paint und füge dann mit einem selbst geschriebenen Programm das Alphakanal bild in den vorgesehenen Kanal des eigentlichen Bildes ein.
Das macht sich eigentlich ganz gut wenn man keine Lust auf aufgeblähte tools hat. |
Re: Was für ne scharfe Auswahlleiste
Wenn jetzt sogar schon Paint.Net aufgebläht sein soll, programmiere ich lieber wieder CLIs ;) . Ich mag verstehen, dass Gimp nicht jedermanns Sache ist (wobei es jau auch "GimpShop" gibt), aber P.N ist wirklich für jeden User ein perfekter Ersatz für Paint.
|
Re: Was für ne scharfe Auswahlleiste
ich kenne paint.net nicht. ich wollte damit sagen das es nicht unbedingt immer ein fertiges programm sein muss sondern das man sich auch einfach ein paar zeilen zusammentippen kann.
|
Re: Was für ne scharfe Auswahlleiste
Könnte man natürlich, der ein oder andere wird dabei auch etwas lernen, aber letztendlich sollte jeder, der mehr als zweimal jährlich ein Bildbearbeitungsprogramm benötigt, sich einen Ruck geben und 10 Sekunden für die Installation von P.N opfern. Es fängt doch schon bei der für diesen Thread benötigten Grafik an: ein abgerundetes Rechteck ohne Anti-Aliasing kann man dem Nutzer von heute schon fast nicht mehr vor die Füße werfen.
Ganz zu schweigen von dem kleinen Schatteneffekt am oberen Ende der Auswahlleiste ;) . |
Re: Was für ne scharfe Auswahlleiste
// offtopic
dass man die Alphamaske der Ebenen nicht direkt bearbeiten kann ist imho schon ein Nachteil. Dann kannst du auch erst die ganzen schönen Effekt machen ;) (Korrigiere mich bitte wenn es da falsch liege, aber das AlphaBlend-Plugin erlaubt eben auch kein inline-editing) |
Re: Was für ne scharfe Auswahlleiste
Meine Meinung, doch da ich keinen Freeware-Editor kenne, der das erlaubt (Gimp kann lediglich die Kanäle in einzelne Bilder separieren, die man nach dem Editieren wieder zusammenfügen muss - ebenfalls ein Gefummel), bleibt Paint.Net meine Empfehlung. Der sonstige Alpha-Support ist ja durchaus benutzbar. Und falls ich das Feature irgendwann einmal dringend benötigen würde, müsste ich es eben kurz selbst hineinhacken :mrgreen: .
|
Re: Was für ne scharfe Auswahlleiste
Zitat:
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:00 Uhr. |
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-2025 by Thomas Breitkreuz