![]() |
Winamp Skin für Gen.bmp
Hier mal meine art einen Skin für Winamp zu schreiben!
Mein erstes reales Projekt in Delphi ;) Nix Copy/Paste alles von Hand !!! :-D
Delphi-Quellcode:
Rest siehe unten Code-Sample..
unit frmGen;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, IniFiles, StdCtrls; type Tfrm_Gen = class(TForm) picMap: TImage; picTopL: TImage; picTopF: TImage; picTopText: TImage; picTopM: TImage; picTopStretch: TImage; picTopC: TImage; picBorderL: TImage; picBottomL: TImage; picBottomR: TImage; picBottomM: TImage; picClose: TImage; picTopTextSrc: TImage; picBorderR: TImage; picFormResize: TImage; picMapSrc: TImage; pBack: TPanel; procedure picFormResizeMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure picCloseMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure picBottomMMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure picFormResizeMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure picFormResizeMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure picTopFMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure FormDestroy(Sender: TObject); procedure picTopLMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure picTopMMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure picTopStretchMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure picTopMDblClick(Sender: TObject); procedure picCloseClick(Sender: TObject); procedure picCloseMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure picTopTextSrcMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure picBottomMDblClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormResize(Sender: TObject); private procedure LoadSkin; procedure ImageCopy; procedure ScaleScreen; procedure picBottomM_Resize; procedure picTopText_Resize; procedure picTopStretch_Resize; procedure StandardSize; function GetBitArray(StrView: String): Integer; procedure SetImage(Destination : TImage; x: Integer; y: Integer; W : Integer; H : Integer; Source : TImage; startX : Integer; StartY : Integer); procedure ChangeGenPos; function MidStr(Const Str: String; From, Size: Word): String; function RightStr(Const Str: String; Size: Word): String; function LeftStr(Const Str: String; Size: Word): String; function SetFullWindowDrag(hwnd: DWORD; ShowFullWindow: Boolean): Boolean; procedure MouseTrap(Sender: TObject; X, Y: Integer); procedure MouseTrap_Release; public end; TSplitStrArray = array of String; function Split(const Source, Delimiter: String): TSplitStrArray; var frm_Gen : TForm; i : Integer; picW : Integer; fTimer : Single; Prg : String; Sect : String; OptDefPath : String; FormFlag : Boolean; FX : Integer; FY : Integer; FormFirst : Boolean; AX : Integer; AY : Integer; PicMapDC : hdc; implementation {$R *.dfm} procedure Tfrm_Gen.ChangeGenPos; Begin picBottomM_Resize; picTopText_Resize; picTopStretch_Resize; End; function Tfrm_Gen.GetBitArray(StrView: String): Integer; Var IntI : Integer; //Zähler StrPosX : String; //X Position im Bitmap StrPosW : String; //Weite des Buchstaben IntPos : Integer; //Zähler für die Buchstabenweite DelemiterCol : TCOLOR; //Delemiter als Farbe IntDelPos : Integer; //Aktuelle Delemiter Position ColFound : Boolean; //Farbe gefunden, ergebnis = Buchstabenweite BWidth : Variant; //Resultat der gefundenen Buchstabenweiten Spliten PosX : Variant; // NewPos : Integer; StrS : String; IntX : Integer; image : TImage; begin IntPos := 0; IntDelPos := 0; ColFound := False; PicMapDC := PicMap.Picture.Bitmap.Canvas.Handle; //******************** Schleife zum ermitteln der Buchstabenweite ********************* /////////////////////////////////////////////////////////////////////////////////////// //Ermitteln der Delemiter Farbe DelemiterCol := GetPixel(PicMapDC, 0, 88); //Schleife durchlaufen bis 26* die Delemiter Farbe gefunden wurde For IntI := 1 To picMap.Width do begin //Raus hier wenn Farbe 26* gefunden If IntDelPos = 26 Then Break; //Aktuelle Position der Buchstabenweite um eins erhöhen inc(IntPos); //Wenn aktuelle position im Bitmap die gleiche Farbe //enthält wie DelemiterCol .. If GetPixel(PicMapDC, IntI, 88) = DelemiterCol Then begin If IntDelPos <= 24 Then begin //Position zum StrPosX addieren und Delemiter komma anhängen StrPosX := StrPosX + IntToStr(IntI) + ','; end Else //Letze Position zum StrPosX addieren ohne Delemiter StrPosX := StrPosX + IntToStr(IntI); //Zähler für Farbe um eins erhöhen inc(IntDelPos); //Farbe gefunden ColFound := True; End; //wenn Farbe gefunden If ColFound Then begin //weite des Buchstaben zum StrPosW addieren If IntDelPos <= 25 Then begin . Vorsicht hier wird SetFullWindowDrag verwendet! :-D Gruß |
Re: Winamp Skin für Gen.bmp
Das als komplettes Projekt im Anhang und ich hätte sogar Lust, es auszuprobieren.. :wink:
|
Re: Winamp Skin für Gen.bmp
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Hoffe es kommt ein kommentar deinerseits :-D Sind noch verschiedene Gen.bmp's im Ordner umbenennen und neu starten zum testen. gruß |
Re: Winamp Skin für Gen.bmp
Ich verstehe nicht wie ich da ein eigenes Formular machen kann,
bei mir kommt immer das gleiche Fenster. Kann mir da wer weiterhelfen? Habe hier Delphi 2005 Personal, sonst noch Delphi 7 Enterprise. Wäre echt toll! //Edit: Vielleicht sollte ich meine Frage auch so formulieren: Wei kann ich eigene Projekte mit diesem Skin machen? |
Re: Winamp Skin für Gen.bmp
Liste der Anhänge anzeigen (Anzahl: 3)
Zitat:
Also ich habe 3.. gruß |
Re: Winamp Skin für Gen.bmp
Na wie ich ein Programm machen kann, das diesen Skin benutzt,
d.h. dass in dem Fenster aus deiner Demo noch Inhalt reinkommt. So einfach ein eigenes Programm, das so aussieht wie dioe Demo, aber natürlich noch einen Sinn hat. Ich hoffe diesmal habe ich mich klar genug ausgedrückt, trotzdem Danke für die schnelle Antwort! //Edit: Na welcher Skin ist erstmal egal, nur dass es einer von deinen ist ich mir im Moment wichtig |
Re: Winamp Skin für Gen.bmp
Wenn du einen MediaPLayer schreiben willst
Dann benötigst du auch noch die anderen Skins von Winamp! Dafür gibt es aber meines erachtens fertige Komponente. Wenn auch nicht vollständig.! gruß |
Re: Winamp Skin für Gen.bmp
Zitat:
Winamp5 Plugins haben keinen eigenen Rahmen mehr dafür wird gen.bmp verwendet. Theoretisch kannst du so damit nichts anfangen. Ist für Leute die als beispiel meine 'Bass_PlgWrapper.dll/BassVis.dll' benutzen. Die können dann Winamp5 Visualisierungen in diesen Fenster darstellen. gruß |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:30 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