Autor Beitrag
Philipp_Reitter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 430



BeitragVerfasst: So 07.01.07 18:13 
Hi

ich würde gerne ein Programm schreiben dass den Desktop verändert.
also so z.b. mehr gelb da drinnen ist... hmm wie soll ich das erklären... die mischmenge der 3 grundfarben im desktop... versteht ihr?
das gibts auch vom grafiktreiber her aber ich wills im prog haben...
geht das? bzw. wie?

Mfg
Chryzler
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1097
Erhaltene Danke: 2



BeitragVerfasst: So 07.01.07 18:17 
Ich weiß nur wie du einmalige den ganzen Desktop einfärben kannst. Aber sobald ein Fenster neugezeichnet wird, kommen an der entsprechenden Stelle die alten Farben zum Vorschein.
Philipp_Reitter Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 430



BeitragVerfasst: So 07.01.07 18:18 
hmmm... wie läuft das? vielleicht kann amn das ja entsprehcen umschrieben... post mal script bitte oder weiß wer nach was ich wo suchen soll...?!
Chryzler
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1097
Erhaltene Danke: 2



BeitragVerfasst: So 07.01.07 18:44 
Extrem langsam. Aber funktioniert! :)
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
procedure ColorizeDesktop(factorr, factorg, factorb: Single);
var
  Canv: TCanvas;
  x, y: Integer;
  c: TColor;
begin
  Canv := TCanvas.Create;
  Canv.Handle := GetWindowDC(GetDesktopWindow);
  for y := 0 to Screen.Height do
    for x := 0 to Screen.Width do
    begin
      c := Canv.Pixels[x, y];
      Canv.Pixels[x, y] := RGB(Round(GetRValue(c) * factorr), Round(GetGValue(c) * factorg), Round(GetBValue(c) * factorb));
    end;
end;

Aufruf für einen schönen Rostton:
ausblenden Delphi-Quelltext
1:
  ColorizeDesktop(1, 0.5, 0.25);					


Zuletzt bearbeitet von Chryzler am So 07.01.07 18:50, insgesamt 1-mal bearbeitet
Chryzler
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1097
Erhaltene Danke: 2



BeitragVerfasst: So 07.01.07 18:49 
Sieht auch nicht schlecht aus. :lol:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
uses
  Math;
...
procedure ColorizeDesktop;
var
  Canv: TCanvas;
  x, y: Integer;
  c: TColor;
  r, g, b: Single;
  fr, fg, fb: Single;
begin
  Canv := TCanvas.Create;
  Canv.Handle := GetWindowDC(GetDesktopWindow);
  for y := 0 to Screen.Height do
    for x := 0 to Screen.Width do
    begin
      c := Canv.Pixels[x, y];
      r := GetRValue(c) * (Sin(GradToRad(x)) * 0.5 + 0.5);
      g := GetGValue(c) * (Cos(GradToRad(y)) * 0.5 + 0.5);
      b := GetBValue(c) * (Sin(GradToRad(x * y)) * 0.5 + 0.5);
      if r > 255 then
        r := 255;
      if g > 255 then
        g := 255;
      if b > 255 then
        b := 255;
      Canv.Pixels[x, y] := RGB(Round(r), Round(g), Round(b));
    end;
end;