![]() |
AW: TAudioVolume Komponente incl. System Mixer
Zitat:
Gehen wir von einer gesamtlautstärke von 100 aus.
Delphi-Quellcode:
IPercent := (IPercent * 100) div 16;
Wenn der Regler ganz nach links verschoben ist dann habe ich die gesamte Lautstärke von 100% auf den linken Kanal und das gleiche in umgekehrter Reihenfolge. Welchen wert man dafür anzeigen will ist letztendlich Geschmacksache. Ok das war's. gruss |
AW: TAudioVolume Komponente incl. System Mixer
OK!
Vorerst die letzte Version.. bis ich das Problem mit dem DisconnectSession geklärt habe. Die TAudioVolume Komponente werde ich erst aktualisieren wenn mein Projekt komplett fertig ist. Mag nicht 3 Baustellen gleichzeitig. ;) Die neuen Futures und Fixes 1. Das Rechte Bitmap zum verschieben der Einträge wird zu schnell ausgeschaltet. (behoben) 2. Das Offset der neu hinzugefügten Session stimmt nicht. (behoben) 3. Invalid Pointer beim ändern der Laustärke. (behoben) 4. Informationen über der zuletzt addierter Session hinzugefügt. 5. Animierten (Zoom) Text addiert incl. Rotation. (Spielerei) 6. ToolTip für Balance addiert 7. Scroll Speed Einstellungen addiert. 8. CPU Auslastung optimiert. gruss |
AW: TAudioVolume Komponente incl. System Mixer
Wenn jemand diesen Mirror Effekt haben möchte muss er nur diese eine Zeile editieren.
anstelle von GI_CreateBitmapFromFile.. Siehe Scroll Speed! Das Image darunter.
Delphi-Quellcode:
Ich habe das gleiche auch bei den Thumps gemacht aber die Höhe der Bitmaps noch verändert.
procedure CreateOptionSprites;
//... hBmp := gSprOption.GI_CreateMirrorBitmapFromFile(PWideChar(SpriteResPath + 'speed.png'), bmW, bmH);
Delphi-Quellcode:
thumbV.png muss dann die höhe von 26 Pixel haben damit es gut aussieht.
hThumb := gSprSession.GI_CreateMirrorBitmapFromFile
(PWideChar(SpriteResPath + 'thumbV.png'), bmW, bmH); Der Effekt dabei ist das es dann einen Schatten auf den Slider Hintergrund wirft. Das selbe beim Master Thumb einfach nach _thumbV.png suchen. sorry vergessen.. Wenn jemand die Thumps ändert muss das ebenfalls ersetzt werden weil sonst das Image optisch nicht mehr in der Mitte liegt beim Mirror Effekt. Die Höhe des Mirror muss dann abgezogen werden.
Delphi-Quellcode:
gruss
// Thumb
{$REGION 'SetThumbVert'} procedure SetThumbVert(ID: Integer; SprCtrl: ISkinSpriteContainer; THUMB_VERT, SLIDER_VERT: Integer; Percent: Single); var x, y, w, h, nY, nH, Half: Integer; IDSlider: Integer; begin if (ID < THUMB_VERT) then inc(ID, THUMB_VERT - SLIDER_VERT); SprCtrl.GD_GetObjectXY(ID - (THUMB_VERT - SLIDER_VERT), x, nY); SprCtrl.GD_GetObjectBound(ID - (THUMB_VERT - SLIDER_VERT), w, nH); SprCtrl.GD_GetObjectBound(ID, w, h); SprCtrl.GD_GetObjectXY(ID, x, y); Half := Round(h / 2) div 2; // Mirror abziehen nY := (nY + nH) - ((round(Percent) * nH) div 100) - Half; SprCtrl.GD_SetObjectXY(ID, x, nY); IDSlider := ID_SLIDER_LED + (ID - ID_THUMB_VERT); SprCtrl.GD_SetObjectImageLabel(IDSlider, FloatToStr(Percent)); SprCtrl.GD_SetObjectTextEx(IDSlider, PWideChar(FloatToStr(Percent))); end; {$ENDREGION} {$REGION 'MoveThumbVert'} procedure MoveThumbVert(ID: Integer; SprCtrl: ISkinSpriteContainer; MouseY, THUMB_VERT, SLIDER_VERT: Integer); var x, y, nY, w, h, nH: Integer; Half: Integer; PosY, Percent: Single; IDX: Integer; begin bMyVolSet := true; if (ID < THUMB_VERT) then inc(ID, THUMB_VERT - SLIDER_VERT); SprCtrl.GD_GetObjectXY(ID - (THUMB_VERT - SLIDER_VERT), x, nY); SprCtrl.GD_GetObjectBound(ID - (THUMB_VERT - SLIDER_VERT), w, nH); SprCtrl.GD_GetObjectBound(ID, w, h); SprCtrl.GD_GetObjectXY(ID, x, y); Half := Round(h / 2) div 2; // Mirror abziehen y := MIN(MAX(MouseY - Half, nY - Half), nY + nH - Half); SprCtrl.GD_SetObjectXY(ID, x, y, true); PosY := (nY + nH) - (y + Half); Percent := (PosY / nH) * 100; IDX := ID + (THUMB_VERT - SLIDER_VERT); SprCtrl.GD_SetObjectImageLabel(IDX, FloatToStr(Percent)); SendMessageW(MainHandle, WM_VSCROLL, MAKELONG(SB_THUMBPOSITION, round(Percent)), IDX); end; {$ENDREGION} |
AW: TAudioVolume Komponente incl. System Mixer
Das mit dem Texteffekt kommt schon geil und jetzt noch sowas, sehr cooles Projekt!
|
AW: TAudioVolume Komponente incl. System Mixer
Zitat:
Im Grunde ist es kein Text mehr. Ich erstelle einen Font anschließend ein Bitmap "GD_CreateBitmapFromText" Dann wird dieses Bitmap zum GD_DrawTextBitmapToCtrl Sprite Container addiert und nun als ganz normales Bitmap behandelt. Mit dem ich dann zoomen, drehen und andere Spielchen machen kann. gruss |
AW: TAudioVolume Komponente incl. System Mixer
Habe noch etwas rumgespielt..
Delphi-Quellcode:
Das Problem bzw. die Fragen die ich nun habe..
// Device
if ID = ID_LIST_DEVICE then begin gSprBackground.GD_GetObjectXY(ID_LIST_DEVICE, x, y); gSprBackground.GD_GetObjectBound(ID_LIST_DEVICE, w, h); if (HiWord(lp) - y) > h div 2 then ID := _DOWN else ID := _UP; gSprBackground.GD_SetObjectTextEx(ID_LIST_TEXT, PWideChar(lstDeviceMsg(ID)), true); PostMessage(MainHandle, WM_COMMAND, MAKELONG(ID_LIST_DEVICE, LBN_SELCHANGE), HSprBackground); // selektierten Eintrag suchen for IntI := 0 to (lstDevice.ListCount(lstDevice.Handle) - 1) do begin SelectedDevice := AudioVolume1.AudioDeviceInfo(IntI).DeviceName; if lstDevice.ListGetText(lstDevice.Handle, 3) = SelectedDevice then break; end; IconIndex := IntI; case IconIndex of 0: // Lausprecher IconHandle := AudioVolume1.LoadMasterIcon('@%SystemRoot%\system32\mmres.dll, -3004'); 1: // Mixer IconHandle := AudioVolume1.LoadMasterIcon('@%SystemRoot%\system32\mmres.dll, -3018'); 2: // LineIn IconHandle := AudioVolume1.LoadMasterIcon('@%SystemRoot%\system32\mmres.dll, -3012'); 3: // CDAudio IconHandle := AudioVolume1.LoadMasterIcon('@%SystemRoot%\system32\mmres.dll, -3020'); 4: // Microfon IconHandle := AudioVolume1.LoadMasterIcon('@%SystemRoot%\system32\mmres.dll, -3014'); end; MainClass.CreateMasterIcon(56, 9, IconHandle); end; 1. Funktioniert das unter Win10 also werden die richtigen Icons angezeigt? (erledigt) 2. Was passiert wenn ich einen anderen treiber als Realtek verwende. 3. Beim ändern des Wiedergabegerät gibt es dann ja auch Probleme wie könnte ich das vergleichen? (erledigt) 4. Wenn ich jetzt ein zusätzliches Gerät aktiviere bsp. Realtek Digital Output dann stimmen die Icons auch nicht mehr weil ich dann 6 Einträge anstatt 5 habe. (erledigt) Wieder so kleine dinge wo ich mit zu kämpfen habe. (Wenn ich die Icons zur Laufzeit anpassen möchte). Eventuell hat jemand einige Ideen. :) (Vergesst es habe es selbst gelöst) gruss |
AW: TAudioVolume Komponente incl. System Mixer
Zitat:
Spass beiseite, die Mixer .exe von oben kommt prima mit SoundBlaster ZxR aus, allerdings nur mit Windows 7 getestet. Mit ![]() |
AW: TAudioVolume Komponente incl. System Mixer
Zitat:
Es geht im allgemeinen um die Icons. Und das kannst du mit der vorherigen Version nicht testen denn dort wird immer nur 1 Icon und immer das selbe angezeigt für das Master Control. Ich muss das mit den Icons nochmal überdenken meine Herangehensweise ist definitiv Falsch. EDIT: Zumal die Icons nicht vom Treiber verwaltet werden sondern von Windows.. Daher kann ich mir diese eine frage sparen. ;) gruss |
AW: TAudioVolume Komponente incl. System Mixer
Das ändern der Icons funktioniert nun so wie es soll und genau so wie Windows es handhabt.
Es wird jetzt immer das Icon verwendet das im Dialog Sound vom User festgelegt wird oder als Default wert dort steht dabei spielt es keine Rolle welches Icon es ist. Also wenn die Icon von der Wiedergabe geändert werden zeige ich sie so an wie geändert Das gleiche bei der Aufnahme.. Wird das CD Audio Icon geändert dann zeige ich es so an wenn das Device im Mixer geändert wird. Also von Lautsprecher zu CD Audio. gruss |
AW: TAudioVolume Komponente incl. System Mixer
Hallo Emil, das mit den Icons hast Du toll hinbekommen, da das erledigt ist schreib ich mal was ich schon vor längerer Zeit schreiben wollte da Du ja nun wieder Luft hast ;-)
Mir sind drei kleine Schönheitsfehler aufgefallen, Programm wird dadurch nicht beeinträchtigt aber es fällt auf. 1. im "Selected Device", bei mir ist Schrift länger als die Box an Platz bietet, der Text wird bei mir am Window-Border gekappt. 2. im "Options" ist es ähnlicher Natur, wenn der "Show Informations" zoomt, dann zeichnet der mini-bissl in den Knopf rein (wenn der Knopf nach links geht) 3. Die Tooltip Farbe hat bei mir keinen Kontrast, weiße Schrift mit hellgrauer Hintergrundfarbe. (Ich bin da kein Farbexperte wie Du, vielleicht ist es auch Ocker für Schrift und Silber als Background) Und falls es Dich interessiert, bei "Show Information" kommt kein "plopp" Geräusch wenn man Schalter umlegt. Das wars auch schon. Nach wie vor, grandioses Design, es gefällt auf Anhieb! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:49 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 by Thomas Breitkreuz