![]() |
AW: VU Meter (Wasapi)
Zitat:
Habe angenommen er hat das Archiv zum testen geladen da ist alles in *.png. Habe als *.png hochgeladen und wird von der DP zu *.jpg umgewandelt. Da gibt es dann halt Artefakte. Nun ist kein Grafiker Forum von daher erst mal egal. gruss |
AW: VU Meter (Wasapi)
Das weiße gefällt mir gut, sieht aus wie ein echtes analoges Instrument aus den 50/60ern.
Gewollt oder Fehler, der rote Bereich liegt etwas höher als die untere Begrenzung des Normalbereiches. Gruß K-H |
AW: VU Meter (Wasapi)
Zitat:
Denke ist wohl eher ein Fehler. Mir ging es darum einen Glas Effekt auf das gesamt VU zu verwirklichen ist eins der schwierigsten Dinge die es unter Graphikern gibt. (Meine nicht diese Orb-Button das in ein Zug mit 3 Effekten) aber nicht realistisch. Dann muss es auch zu meinem Skin Layout passen. Aber habe nichts dagegen wenn jemand den source *.psd dementsprechend anpassen möchte ;) Ein Originales VU hat nun mal als Abdeckung eine Glasscheibe. gruss |
AW: VU Meter (Wasapi)
Hallo Emil,
versuch doch mal mit Alphatransparenzen innerhalb der Ebenen zu arbeiten. Im Moment sieht es so aus als würde das Licht (sowohl in der grünen als auch der gelben Variante) von vorne auf die Skale strahlen. In Natura ist sowas ja eher backlighted. Wenn du die Schrift zB mit FFFFFF66 anlegst und den dunklen Skalenhintergrund mit zB 33333300. Dann legst du den farbigen Lichtkegel zweimal an als Ebene. Einmal mit hoher Deckfähigkeit HINTER der Skale und ein zweites Mal mit geringer Deckfähigkeit VOR der Skale. Dadurch ließe sich evtl. ein besserer Backlight-Effekt erzeugen. Grüße Cody |
AW: VU Meter (Wasapi)
Zitat:
Hier noch einige Informationen bzg. des Projekts. Das Bitmap selbst also das weiße liegt nicht als Datei vor sondern wird Binär im Code selbst erzeugt. bsp.
Delphi-Quellcode:
Ich habe einen Shot vom Programm genommen und das Bitmap meinen Ansprüchen entsprechen angepasst.
VU_BASE: array[0..VU_WIDTH*VU_HEIGHT*4-1] of BYTE = (
$04,$00,$00,$00,$04,$00,$00,$00,$04,$00,$00,$00,$04,$00,$00,$00, $04,$00,$00,$00,$04,$00,$00,$00,$04,$00,$00,$00,$04,$00,$00,$00, Das Original Source ist ![]() Meine Version verwendet nichts von der DirectX Version diese wird unter Verwendung von GDI+ erstellt. Im Anhang also ein funktionierende Version von Silhwan. Dort kann man dann auch mal die Technische Seite beleuchten in wie weit das einem Originalen VU entspricht. PS: Vielleicht kann man den Thread nach Projekte verschieben ? gruss |
AW: VU Meter (Wasapi)
Interessant!
ich habe selbst eine Aussteuerungsanzeige gebastelt. aber die ist bei weitem nicht so gehörrichig wie Dein Beispiel. Gruß K-H |
AW: VU Meter (Wasapi)
Zitat:
Der aktuelle Status als Bitmap angehängt. (Leider nicht so sauber weil wieder nach *.jpg durch die DP komprimiert.) Nur falls jemand schimpft ;) Zitat:
Wenn du vielleicht Interesse hast das Bitmap anzupassen ![]() gruss |
AW: VU Meter (Wasapi)
Ist vielleicht nur ein kleines Detail, aber sollte der Zeiger nicht hinter der Schraube und dem Glas liegen? Also eher so wie hier:
![]() Sherlock |
AW: VU Meter (Wasapi)
Zitat:
Habe ich heute morgen auch gesehen nachdem ich den Compi angemacht habe.. hehehehe. PS: Korrektur..
Delphi-Quellcode:
gruss
procedure CreateVUSprites(WinHandle: HWND; X, Y: Integer; SpritePath: string);
var HBmp: HBITMAP; ImgW, ImgH: Cardinal; X1, Y1: Integer; IntI: Integer; bmW, bmH: Cardinal; VuHeight, VUWidth: Integer; VULeftX, VULeftY: Integer; VURightX, VURightY: Integer; DotTop, DotWidth: Integer; begin VuHeight := 0; VuWidth := 0; DotTop := 0; DotWidth := 0; if gSprVU.GD_GetObjectBitmap(ID_LAYER) = 0 then begin hBmp := gSprVU.GI_CreateBitmapFromFile(PWideChar(SpritePath + 'Layer.png'), ImgW, ImgH); if hBmp <> 0 then begin // Layer gSprVU.GD_DrawBitmapToCtrl(WinHandle, X, Y, hBmp, gSprVU.GD_ColorARGB(255, 0), ID_LAYER, GS_VISIBLE); gSprVU.GD_SetObjectLinked(ID_LAYER, ID_LAYER); gSprVU.GD_SetObjectLocked(ID_LAYER, true); hBmp := gSprVU.GI_CreateBitmapFromFile(PWideChar(SpritePath + 'TopLight.png'), ImgW, ImgH); X1 := X + 110; Y1 := Y + 28; for IntI := 0 to 3 do begin gSprVU.GD_DrawBitmapToCtrl(WinHandle, X1, Y1, hBmp, gSprVU.GD_ColorARGB(255, 0), ID_TOPLIGHT + IntI, GS_HIDDEN); gSprVU.GD_SetObjectLinked(ID_TOPLIGHT + IntI, ID_LAYER); case IntI of 0: X1 := X1 + 240; 1: X1 := X1 + 110; 2: X1 := X1 + 240; end; end; // ************** VUMeter Left VULeftX := X + 64; VULeftY := Y + 32; hBmp := gSprVU.GI_CreateBitmapFromFile(PWideChar(SpritePath + 'BVU.png'), ImgW, ImgH); if hBmp <> 0 then begin gSprVU.GD_DrawBitmapToCtrl(WinHandle, VULeftX, VULeftY, hBmp, gSprVU.GD_ColorARGB(255, 0), ID_VULEFT, GS_VISIBLE); gSprVU.GD_SetObjectLinked(ID_VULEFT, ID_VULEFT); gSprVU.GD_SetObjectLocked(ID_VULEFT, true); VuHeight := ImgH; VuWidth := ImgW; end; // LeftPendel hBmp := gSprVU.GI_CreateBitmapFromFile(PWideChar(SpritePath + 'Pendel.png'), ImgW, ImgH); if hBmp <> 0 then begin gSprVU.GD_DrawBitmapToCtrl(WinHandle, VULeftX + (VuWidth div 2) - 10, VULeftY + 39, hBmp, gSprVU.GD_ColorARGB(255, 0), ID_PENDELLEFT, GS_VISIBLE); gSprVU.GD_SetObjectLinked(ID_PENDELLEFT, ID_VULEFT); gSprVU.GD_SetObjectLocked(ID_PENDELLEFT, true); gSprVU.GD_SetObjectAngle(ID_PENDELLEFT, 310); end; // Dot hBmp := gSprVU.GI_CreateBitmapFromFile(PWideChar(SpritePath + 'Dot.png'), ImgW, ImgH); if hBmp <> 0 then begin DotTop := (VULeftY + VuHeight) - Integer(ImgH); DotWidth := ImgW; gSprVU.GD_DrawBitmapToCtrl(WinHandle, VULeftX + (VuWidth - DotWidth + 1) div 2, DotTop, hBmp, gSprVU.GD_ColorARGB(255, 0), ID_DOTLEFT, GS_VISIBLE); gSprVU.GD_SetObjectLinked(ID_DOTLEFT, ID_VULEFT); gSprVU.GD_SetObjectLocked(ID_DOTLEFT, true); end; // VULeftLight hBmp := gSprVU.GI_CreateBitmapFromFile(PWideChar(SpritePath + 'BLight.png'), ImgW, ImgH); if hBmp <> 0 then begin gSprVU.GD_DrawBitmapToCtrl(WinHandle, VULeftX, VULeftY, hBmp, gSprVU.GD_ColorARGB(255, 0), ID_LIGHTLEFT, GS_HIDDEN); gSprVU.GD_SetObjectLinked(ID_LIGHTLEFT, ID_VULEFT); gSprVU.GD_SetObjectLocked(ID_LIGHTLEFT, true); end; // ************** VU Meter Right VURightX := VULeftX + Integer(ImgW); VURightY := VULeftY; // same Bitmap as VULeft so to clone gSprVU.GD_CloneObject(ID_VULEFT, ID_VURIGHT, VURightX, VURightY); // RightPendel // same Bitmap as LeftPendel so to clone gSprVU.GD_CloneObject(ID_PENDELLEFT, ID_PENDELRIGHT, VURightX + (VuWidth div 2) - 10, VURightY + 39); gSprVU.GD_SetObjectAngle(ID_PENDELRIGHT, 310); // Dot // same Bitmap as DotLeft so to clone gSprVU.GD_CloneObject(ID_DOTLEFT, ID_DOTRIGHT, VURightX + (VuWidth - DotWidth + 1) div 2, DotTop); // VURightLight // same Bitmap as VULeftLight so to clone gSprVU.GD_CloneObject(ID_LIGHTLEFT, ID_LIGHTRIGHT, VURightX, VURightY); hBmp := gSprVU.GI_CreateBitmapFromFile(PWideChar(SpriteResPath + 'hSwitch.png'), bmW, bmH); if (hBmp <> 0) then begin gSprVU.GD_DrawBitmapToCtrl(HSprVU, 740, 267, hBmp, OPAQUEIMAGE, ID_POWER, GS_VISIBLE); gSprVU.GD_SetObjectFrameCount(ID_POWER, 2); // Frame 2 Power OFF gSprVU.GD_SetObjectFrameToUse(ID_POWER, 2); gSprVU.GD_SetObjectLocked(ID_POWER, true); end; // Left Anchor gSprVU.GD_SetObjectAnchorMode(ID_VULEFT, ANCHOR_CENTER); gSprVU.GD_SetObjectAnchorMode(ID_PENDELLEFT, ANCHOR_CENTER); gSprVU.GD_SetObjectAnchorMode(ID_LIGHTLEFT, ANCHOR_CENTER); gSprVU.GD_SetObjectAnchorMode(ID_DOTLEFT, ANCHOR_CENTER); // Right Anchor gSprVU.GD_SetObjectAnchorMode(ID_VURIGHT, ANCHOR_CENTER); gSprVU.GD_SetObjectAnchorMode(ID_PENDELRIGHT, ANCHOR_CENTER); gSprVU.GD_SetObjectAnchorMode(ID_LIGHTRIGHT, ANCHOR_CENTER); gSprVU.GD_SetObjectAnchorMode(ID_DOTRIGHT, ANCHOR_CENTER); end; end; end; |
AW: VU Meter (Wasapi)
Fertig.. Bitte schön wer's braucht.
gruss |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02: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-2025 by Thomas Breitkreuz