Avatar billede angelod Novice
10. december 2002 - 19:44 Der er 5 kommentarer og
2 løsninger

Benytte skins i applikationer

Okay, nu udbyder jeg 200 point til den person som kan give mig noget brugbart information omkring skins til Delphi applikationer. Jeg har ledt Torry og DelphiPages igennem, men har kun fundet komponenter som burde virke, men viser sig ikke at virke efter hensigten.

Desuden er jeg ikke efter en skin-komponent som sådan, men mere en vejledning i hvordan man kan gøre det selv. Jeg bruger Delphi 7 Pro, og den har en "TransparentColor" setting som virker fint, men jeg vil gerne vide hvordan man kan gøre det bedre, da den jo tager *alt* i den pågældende farve og laver gennemsigtigt, noget som bestemt ikke er hensigtsmæssigt da programmet bl.a. skal kunne vise nogle billeder/tegninger.

En anden ting som ville være lækkert er muligheden for at understøtte gradvis gennemsigtighed, som f.eks. hvis et skin har en "shape-based drop-shadow" i sig.

Så please, er der ikke en som kan hjælpe her? :o)
Avatar billede hermandsen Juniormester
11. december 2002 - 15:21 #1
Hvis du skal klippe i din form, så lavede jeg en gang det her:

procedure TForm1.FormCreate(Sender: TObject);
var
  RGN: array of TPoint;
  sl: TStringList;
  S: String;
  I: Integer;
begin
  S := ExtractFilePath(Application.ExeName) + 'rgn.txt';
  if not FileExists(S) then Exit;
  sl := TStringList.Create;
  sl.LoadFromFile(S);
  SetLength(RGN, sl.Count);
  for I := 0 to sl.Count-1 do
  begin
    S := sl.Strings[I];
    RGN[I].x := StrToInt(Copy(S, 0, Pos(',', S)-1));
    RGN[I].y := StrToInt(Copy(S, Pos(',', S)+1, Length(S)));
  end;
  SetWindowRgn(Handle, CreatePolygonRgn(Pointer(RGN)^, High(RGN)+1, ALTERNATE), True);
  sl.Free;
end;

Den kræver bare en rgn.txt-fil der ligger sammen med exe-filen og har opbygningen:

0,0
23,54
54,86

osv...

Hver linie angiver et punkt på formen som der klippes til... Så er det ellers bare at klippe som du vil...
At lave et "klippe-program" til at generere en rgn-fil, er heller verdens sværeste opgave! ;)

//hermandsen
Avatar billede borrisholt Novice
11. december 2002 - 15:41 #2
Kan man godt selv om man ikke er frisør ?

Jens B
Avatar billede angelod Novice
11. december 2002 - 15:46 #3
Problemet er jo at jeg ikke vil at en bruger skal sidde og klippe det ud manuelt, men at det skal bestemmes ud fra en farve helst. Desuden skal delvis "Transparency" kunne bestemmes også, hvis muligt.

Din funktion er god hvis skins kun skulle laves af en selv, men jeg vil helst ikke udsætte en bruger for at skulle gøre dette.
Avatar billede hermandsen Juniormester
12. december 2002 - 11:52 #4
>>jens
Njaaaa... Det er jo derfor vi skal ha' et klippe program til det! ;)

>>angelod
Hvis du kigger på skinning-teknikken i Winamp 2.x, så vil du se at de heller ikke benytter transparency-farve-tingen, men i stedet giver mulighed for at bruge rgn-fil-teknikken (deres er lavet på en anden måde)...

Jeg har set din metode i andre programmer, men skal ikke kunne siges hvordan det gøres...

En anden ide var måske at lave en app til skinning som så tjekker for farven RGB(255, 0, 255); (eller hvad du nu vil), og så laver rgn-filen ud fra det... Så kunne du eventuelt gøre det pr pixel-linie i programmet, og så smække nogle firkanter rundt om dem...

Eller bare lade brugeren klippe programmet ud manuelt ved at sætte en masse punkter efter hinanden på et billede, men det er op til dig, sådan et program er jo ikke verdens sværeste at lave! ;)

//hermandsen
Avatar billede angelod Novice
12. december 2002 - 15:57 #5
Godt så.. Hermandsen, du gav ikke et endegyldigt svar som jeg kunne bruge fuldt ud, men du gav mig tilstrækkeligt med ideer til at kunne lokalisere noget selv, så for det får du 50 point.

Løsningerne fandt jeg her:

En udførlig tutorial i brugen af regions og Windows skinning, skrevet til C/C++, men er rimeligt nem at overføre til Delphi:
http://www.flipcode.com/articles/article_win32skins.shtml

Samt en fil som beskriver det hele på en anelse mere besværlig måde, men stadigvæk forståeligt:
(PDF version)
http://www.blichmann.de/downloads/translucency_tutorial.pdf
(HTML version download, samt eksempler)
http://www.blichmann.de/downloads/index.htm

NOTE! Der er en reference til Graphics32 i translucency_tutorial, samt et link til Graphics32 version 1.0, men den er siden blevet til version 1.4 og kan findes her:
http://www.blichmann.de/downloads/translucency_tutorial.pdf
Avatar billede hermandsen Juniormester
13. december 2002 - 07:52 #6
Bare i orden! Er glad for at du kunne bruge det! ;)
Avatar billede angelod Novice
13. december 2002 - 07:56 #7
Hov! Opdagede da lige at jeg lavede en fejl.. Graphics32 kan hentes på http://www.g32.org/graphics32/ og ikke blichmann.de
:o)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester