AGB  ·  Datenschutz  ·  Impressum  







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

Winamp Skin für Gen.bmp

Ein Thema von EWeiss · begonnen am 8. Okt 2006 · letzter Beitrag vom 9. Okt 2006
 
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
 


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 02:33 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