AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte AudioDB 5.3.2.8 - Internet-Stream & Audio-Player
Thema durchsuchen
Ansicht
Themen-Optionen

AudioDB 5.3.2.8 - Internet-Stream & Audio-Player

Ein Thema von Dunkel · begonnen am 16. Apr 2007 · letzter Beitrag vom 19. Jul 2008
 
Benutzerbild von Dunkel
Dunkel

Registriert seit: 26. Mär 2007
Ort: Klingenstadt
541 Beiträge
 
Delphi 2007 Enterprise
 
#18

Re: AudioDB 5.3.2.2 - Internet-Stream & Audio-Player

  Alt 24. Aug 2007, 18:58
Zitat von dominikkv:
nÖ...nix...nicht mal in der konsole.
und am lied kanns nicht liegen, ich hab mehrere probiert.
komisch ist nur das im open-dialog der button der eigendlich mit "Öffnen" beschriftet ist mit "Speichern" beschriftet ist.
Überaus Mysteriös! Ich habe im ganzen Projekt nur ein (1) TSaveDialog verwendet, in einer anderen Klasse, um genauer zu sein, zum Speichern der Playlist. In der Player-Klasse & im Player-Fenster gibt es nur ein TOpenDialog. Das was Du beschreibst dürfte, nein, kann eigentlich garnicht vorkommen! Ich gucke mir das Problem nochmal genauer an.

Zitat von dominikkv:
Zitat von Dunkel:
Zitat von dominikkv:
Zitat von Dunkel:
TImage.Canvas
ok...das ist ein bisschen zu hoch für mich^^
Quatsch! So schwer ist das nicht! Mit ein wenig experimentieren kriegt man das recht gut hin.
Aber ich hab das noch nie gemacht... und hab kein plan wie das geht^^
gibts da nen tut oder so?
So male ich die Trackbar, benutze es mal als "Inspiration"
Delphi-Quellcode:
procedure TF_Player.TrackBar_Draw;
  function ChangeColor(InputColor: TColor; Base, Val: Extended): TColor;
  var
    r,g,b: extended;
  begin
    Val:= 255/(Base+1)*Val;
    Base:=255;
    // Grab RGB values
    r := GetRValue(InputColor);
    g := GetGValue(InputColor);
    b := GetBValue(InputColor);
    // Do the operation
    r := r-((Val/Base)*100);
    g := g-((Val/Base)*100);
    b := b-((Val/Base)*100);
    // Check whether result is in range
    if r > 255 then
      r := 255;
    if r < 0 then
      r := 0;
    if g > 255 then
      g := 255;
    if g < 0 then
      g := 0;
    if b > 255 then
      b := 255;
    if b < 0 then
      b := 0;
    Result := RGB(byte(Round(r)),byte(Round(g)),byte(Round(b)));
  end;
var
  i: integer;
  XX, YY: integer;
  TempBMP: TBitmap;
  PlayerPos: integer;
const
  NetStreamScrollerWidth = 80;
begin
  YY:= 0;
  PlayerPos:= TrackBar_PercentToPos(fPlayer.PosElapsedPercent); // die aktuelle Player-Position in Prozent

  TempBMP:= TBitmap.Create;
  TempBMP.Height:= PB_TrackBar.Height;
  TempBMP.Width:= PB_TRackBar.Width;
  TempBMP.Canvas.Brush.Color:= clWhite;
  TempBMP.Canvas.FillRect(TempBMP.Canvas.ClipRect);

  if not fPlayer.IsNetStream then // der aktuelle Track ist kein NetStream
    begin

      if fPlayer.PlayerState = psPlay then // der aktuelle Track wird abgespielt
        if TrackBar_ScrollerCounter <= GetTickCount then
          begin
            TrackBar_ScrollerCounter:= GetTickCount +75;
            Inc(TrackBar_Scroller);
            if TrackBar_Scroller Mod 13 = 0 then
              TrackBar_Scroller:= 0;

        end;

      for i:=0 to PlayerPos do
        begin
          YY:=0;
          if i= 0 then YY:= 3;
          if i= 1 then YY:= 2;
          if i= 2 then YY:= 1;
          if i= PB_TRackBar.Width-1 then YY:= 3;
          if i= PB_TRackBar.Width-2 then YY:= 2;
          if i= PB_TRackBar.Width-3 then YY:= 1;


          TempBMP.Canvas.Pen.Color:= ChangeColor(Color_TrackBar, PlayerPos, i); // TempBMP.Width
          TempBMP.Canvas.MoveTo(i, 0+YY);
          TempBMP.Canvas.LineTo(i, TempBMP.Height-YY);

          if i MOD 13 = TrackBar_Scroller then
            begin
              TempBMP.Canvas.Pen.Color:= ChangeColor(Color_TrackBar, 500, i);
              TempBMP.Canvas.MoveTo(i-3, 1+YY);
              TempBMP.Canvas.LineTo(i, TempBMP.Height-1-YY);
            end;


        end;

      if fPlayer_RepeatMode = 4 then // Loop A-B
        begin
          if fPlayer.RepeatABPosASec>= 0 then
            begin
              xx:= TrackBar_SecToPos(Round(fPlayer.RepeatABPosASec));
              TempBMP.Canvas.Pen.Color:= COLOR_TrackBarRepeatAB;
              TempBMP.Canvas.MoveTo(xx-3, 0);
              TempBMP.Canvas.LineTo(xx, TempBMP.Height div 2);
              TempBMP.Canvas.LineTo(xx-3, TempBMP.Height);
              TempBMP.Canvas.LineTo(xx-3,0);
            end;

          if fPlayer.RepeatABPosBSec>= 0 then
            begin
              xx:= TrackBar_SecToPos(Round(fPlayer.RepeatABPosBSec));
              TempBMP.Canvas.Pen.Color:= COLOR_TrackBarRepeatAB;
              TempBMP.Canvas.MoveTo(xx+3, 0);
              TempBMP.Canvas.LineTo(xx, TempBMP.Height div 2);
              TempBMP.Canvas.LineTo(xx+3, TempBMP.Height);
              TempBMP.Canvas.LineTo(xx+3,0);
            end;
        end;

      if (MouseButtonEx(TrackBar_ShiftState) = [mbeLeft]) or
         (MouseButtonEx(TrackBar_ShiftState) = [mbeRight]) then
        if (TrackBar_MouseButton= mbLeft) or (TrackBar_MouseButton= mbRight)then
          begin
            TempBMP.Canvas.Pen.Color:= clWhite;
            TempBMP.Canvas.Brush.Color:= clBlack;
            TempBMP.Canvas.Ellipse(Rect(TrackBar_MousePosX-TempBMP.Height div 3,0+YY,TrackBar_MousePosX+TempBMP.Height div 3, TempBMP.Height-YY));
          end;
    end;

  if fPlayer.IsNetStream then
    begin
      if fPlayer.PlayerState = psPlay then
        begin
          TrackBar_NetStreamScroller:= TrackBar_NetStreamScroller + 1;

          if TrackBar_NetStreamScroller > TempBMP.Width then
            TrackBar_NetStreamScroller:= -NetStreamScrollerWidth;

          TempBMP.Canvas.Brush.Color:= COLOR_Selected;
          for i:= TrackBar_NetStreamScroller to TrackBar_NetStreamScroller + NetStreamScrollerWidth do
            begin
              YY:=0;
              if i= 0 then YY:= 3;
              if i= 1 then YY:= 2;
              if i= 2 then YY:= 1;
              if i= PB_TRackBar.Width-1 then YY:= 3;
              if i= PB_TRackBar.Width-2 then YY:= 2;
              if i= PB_TRackBar.Width-3 then YY:= 1;

              if i= TrackBar_NetStreamScroller+0 then YY:= 3;
              if i= TrackBar_NetStreamScroller+1 then YY:= 2;
              if i= TrackBar_NetStreamScroller+2 then YY:= 1;
              if i= TrackBar_NetStreamScroller+NetStreamScrollerWidth-0 then YY:= 3;
              if i= TrackBar_NetStreamScroller+NetStreamScrollerWidth-1 then YY:= 2;
              if i= TrackBar_NetStreamScroller+NetStreamScrollerWidth-2 then YY:= 0;
// if i= TrackBar_NetStreamScroller+NetStreamScrollerWidth-3 then YY:= 1;



              TempBMP.Canvas.Pen.Color:= ChangeColor(Color_TrackBar, TempBMP.Width, i);
              TempBMP.Canvas.MoveTo(i, 0+YY);
              TempBMP.Canvas.LineTo(i, TempBMP.Height-YY);
            end;
        end;
    end;

  with TempBMP.Canvas do
    begin
      if not fPlayer.IsNetStream then
        begin
          if Trackbar_MouseIsInside then
            Pen.Color:= Color_Selected
          else
            Pen.Color:= clBlack;
        end
      else
        Pen.Color:= clBlack;
          
      MoveTo(3, 0);
      LineTo(PB_TRackBar.Width-4,0);
      LineTo(PB_TRackBar.Width-1,3);
      LineTo(PB_TRackBar.Width-1, PB_TRackBar.Height-4);
      LineTo(PB_TRackBar.Width-4, PB_TRackBar.Height-1);
      LineTo(3, PB_TRackBar.Height-1);
      LineTo(0, PB_TRackBar.Height-4);
      LineTo(0, 3);
      LineTo(3, 0);
    end;


  PB_TrackBar.Canvas.CopyRect(Rect(0,0,PB_TrackBar.Width, PB_TrackBar.Height), TempBMP.Canvas, TempBMP.Canvas.ClipRect);
  TempBMP.Free;
end;
Oha, ich muss mich korrigieren. Ich benutze kein TImage sondern eine TPaintBox.
Es ist zu wahr um schön zu sein...
  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:38 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