AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Winamp Skin für Gen.bmp

Winamp Skin für Gen.bmp

Ein Thema von EWeiss · begonnen am 8. Okt 2006 · letzter Beitrag vom 9. Okt 2006
Antwort Antwort
EWeiss
(Gast)

n/a Beiträge
 
#1

Winamp Skin für Gen.bmp

  Alt 8. Okt 2006, 22:52
Hier mal meine art einen Skin für Winamp zu schreiben!
Mein erstes reales Projekt in Delphi
Nix Copy/Paste alles von Hand !!!

Delphi-Quellcode:
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
.
Rest siehe unten Code-Sample..
Vorsicht hier wird SetFullWindowDrag verwendet!

Gruß
  Mit Zitat antworten Zitat
Daniel G
(Gast)

n/a Beiträge
 
#2

Re: Winamp Skin für Gen.bmp

  Alt 8. Okt 2006, 22:56
Das als komplettes Projekt im Anhang und ich hätte sogar Lust, es auszuprobieren..
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#3

Re: Winamp Skin für Gen.bmp

  Alt 8. Okt 2006, 23:03
Zitat von Daniel G:
Das als komplettes Projekt im Anhang und ich hätte sogar Lust, es auszuprobieren..
Sollst du haben
Hoffe es kommt ein kommentar deinerseits

Sind noch verschiedene Gen.bmp's im Ordner umbenennen und neu starten zum testen.

gruß
Angehängte Dateien
Dateityp: rar gen_delphi_850.rar (242,4 KB, 85x aufgerufen)
  Mit Zitat antworten Zitat
zahor

Registriert seit: 27. Jun 2006
Ort: im hintersten Winkel des RAMs
182 Beiträge
 
Delphi 2007 Professional
 
#4

Re: Winamp Skin für Gen.bmp

  Alt 9. Okt 2006, 17:11
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?
Real Programmers always confuse Christmas and Halloween because Oct31 = Dec25. - Andrew Rutherford
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#5

Re: Winamp Skin für Gen.bmp

  Alt 9. Okt 2006, 17:19
Zitat von zahor:
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!
um was geht es denn ?
Also ich habe 3..


gruß
Angehängte Grafiken
Dateityp: bmp 3_206.bmp (91,4 KB, 46x aufgerufen)
Dateityp: bmp 2_149.bmp (91,4 KB, 42x aufgerufen)
Dateityp: bmp 1_687.bmp (91,4 KB, 43x aufgerufen)
  Mit Zitat antworten Zitat
zahor

Registriert seit: 27. Jun 2006
Ort: im hintersten Winkel des RAMs
182 Beiträge
 
Delphi 2007 Professional
 
#6

Re: Winamp Skin für Gen.bmp

  Alt 9. Okt 2006, 17:29
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
Real Programmers always confuse Christmas and Halloween because Oct31 = Dec25. - Andrew Rutherford
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#7

Re: Winamp Skin für Gen.bmp

  Alt 9. Okt 2006, 17:30
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ß
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#8

Re: Winamp Skin für Gen.bmp

  Alt 9. Okt 2006, 17:36
Zitat von zahor:
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
Also der Gen Skin wird bei Winamp als eine art Container für Visualisierungen, InputPlugins usw... benutzt.
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ß
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 06:56 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf