AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

hintergrundefekt

Ein Thema von toredo · begonnen am 12. Mai 2006 · letzter Beitrag vom 26. Sep 2008
Antwort Antwort
Seite 2 von 3     12 3      
toredo

Registriert seit: 6. Apr 2006
Ort: Oberriet
210 Beiträge
 
Delphi 7 Enterprise
 
#11

Re: hintergrundefekt

  Alt 13. Mai 2006, 13:17
klingt kompliziert, ich werds mir aber trozdem anschauen



mfG toredo
Benj Meier
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#12

Re: hintergrundefekt

  Alt 13. Mai 2006, 13:19
Hallo,
Zitat von toredo:
aber wenn ich das mache wird logischerweise das bild im TImage dunkler (aber irgendwie ist es einfach ein bisschen grauer und wird ned dunkler?), aber kann ich auch machen, dass der hintergrund dunkler wird?
Genau, das Bild wird ja mit einer grauen Version seiner Selbst überblendet, also mit jedem Schleifendurchlauf immer grauer.
Wenn Du das Bild dunkler haben willst (was dann nicht mehr der WinXP-Effekt wäre), dann ändere doch einfach die Funktion "ToGray" so ab, dass alle Farben noch etwas dunkler sind, z. B.
Delphi-Quellcode:
...
    //Pixel holen
    Trip := PRGBTriple(P);

    // Graustufenberechnung
    Gray := Round((Trip.rgbtBlue * 0.114 + Trip.rgbtGreen * 0.578 + Trip.rgbtRed * 0.299) * 0.5); // halbe Helligkeit
    Trip.rgbtBlue := Gray;
    Trip.rgbtGreen := Gray;
    Trip.rgbtRed := Gray;

    // Nächster Pixel
...
Zitat von toredo:
weil n'TImage kann man ja nicht auserhalb der form hinsetzen^^
Das TImage ist ja nur ein Beispiel. Wo Du Dein Bitmap hernimmst und wo Du dann hinmalst ist natürlich Deine Sache.

Gruß
xaromz
  Mit Zitat antworten Zitat
toredo

Registriert seit: 6. Apr 2006
Ort: Oberriet
210 Beiträge
 
Delphi 7 Enterprise
 
#13

Re: hintergrundefekt

  Alt 13. Mai 2006, 13:22
ok, aber wie kann ich denn ein bild vom hintergrund machen, bzw. es dann später auf dem hintergrund darstellen lassen?

das mit den farben hab ich jetzt auch kapiert



mfG toredo
Benj Meier
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.767 Beiträge
 
Delphi 10.4 Sydney
 
#14

Re: hintergrundefekt

  Alt 13. Mai 2006, 13:32
vielleicht eine Form die den ganzen Bildschirm ausfüllt
ohne Rahmen und ohne alles.
Damit kannst Du das dann auch erreichen, daß
niemand mehr in den Hintergrund klicken kann.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
toredo

Registriert seit: 6. Apr 2006
Ort: Oberriet
210 Beiträge
 
Delphi 7 Enterprise
 
#15

Re: hintergrundefekt

  Alt 13. Mai 2006, 14:17
hm, also ne zweite form wär keine schlechte idee

dann muss ich nur noch wissen wie man vom ganzen bildschirm ein pic erstellt bevor die form erscheint, udn dieses pic sollte dann auf die neue form kommen.



mfG toredo
Benj Meier
  Mit Zitat antworten Zitat
Flare

Registriert seit: 26. Jan 2006
Ort: Leipzig
529 Beiträge
 
Delphi 7 Professional
 
#16

Re: hintergrundefekt

  Alt 13. Mai 2006, 14:23
Du könntest ja ShowMasTa ganz nett fragen ob er dir sagt wie er es gemacht hat.
Den sein Programm läuft ja hier nebenbei als Thread.


Flare
Willy Scheibel
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.767 Beiträge
 
Delphi 10.4 Sydney
 
#17

Re: hintergrundefekt

  Alt 13. Mai 2006, 15:42
Wie Du einen ScreenShot machen kannst findest Du hier:
http://www.dsdt.info/tipps/?id=316

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
toredo

Registriert seit: 6. Apr 2006
Ort: Oberriet
210 Beiträge
 
Delphi 7 Enterprise
 
#18

Re: hintergrundefekt

  Alt 13. Mai 2006, 15:50
öhm, ich habe grade gemerkt, dass ich die neue form nicht über die taskleiste legen kann...
weiss jemand wie man das machen kann?

und wie kann ich machen, dass ne form nicht "bewegbar" ist, also man kann sie halt ned hin und her schieben und so...



mfG toredo
Benj Meier
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.767 Beiträge
 
Delphi 10.4 Sydney
 
#19

Re: hintergrundefekt

  Alt 13. Mai 2006, 15:57
Du kannst ja die Taskbar verstecken -> http://home.arcor.de/hardcoders/delp...ten/sy_15.html
oder hier -> http://delphi.zsg-rottenburg.de/faq.html oder auch hier -> http://www.patrick-lenger.de/html/delphi/taskleiste.htm

und bitte daran denken, die taskbar wieder sichtbar zu machen, wenn Dein Programm beendet wird.

Wenn Deine Form keine Rahmen hat, kann man sie theoretisch auch nicht bewegen.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#20

Re: hintergrundefekt

  Alt 13. Mai 2006, 17:49
Ein Beispiel:

Delphi-Quellcode:
unit Unit1;

interface

uses
  {$IFDEF VER170}
    XPMan,
  {$ENDIF}
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, Buttons;

type
  TFadeThread = class(TThread)
  private
    FParameter: Integer;
  protected
    procedure Execute; override;
  public
    constructor Create(FadeLevel: Integer);
  end;

  TForm1 = class(TForm)
    Panel1: TPanel;
    Button1: TButton;
    Panel2: TPanel;
    Panel3: TPanel;
    Panel4: TPanel;
    Panel5: TPanel;
    Panel6: TPanel;
    PaintBox1: TPaintBox;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure PaintBox1Paint(Sender: TObject);
  private
    { Private-Deklarationen }
    bmp: TBitmap;
    Fade: TFadeThread;
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

type
  TPixRGBArray = Array [0..2] of Byte;
  PPixRGBArray = ^TPixRGBArray;

procedure ScreenCapture(Bitmap: TBitmap);
var
  c: TCanvas;
  r: TRect;
begin
  c := TCanvas.Create;
  c.Handle := GetWindowDC(GetDesktopWindow);
  try
    r := Rect(0, 0, Screen.Width, Screen.Height);
    Bitmap.Width := Screen.Width;
    Bitmap.Height := Screen.Height;
    Bitmap.Canvas.CopyRect(r, c, r);
  finally
    ReleaseDC(0, c.Handle);
    c.Free;
  end;
end;

procedure MakeGray(Bitmap: TBitmap; HowGray : Byte);
var
  x, y: integer;
  R, G, B, h: Byte;
  Pixel: PPixRGBArray;
begin
  if Bitmap.PixelFormat <> pf24bit then
    Bitmap.PixelFormat := pf24bit;

  for y := 0 to Bitmap.height - 1 do
  begin
    Pixel := Bitmap.ScanLine[y];
    for x := 0 to Bitmap.Width - 1 do
    begin
      R := Pixel^[2];
      G := Pixel^[0];
      B := Pixel^[1];

      //h := (r+b+g) div 3;
      h:= HiByte(r * 77 + g * 150 + b * 28);

      Pixel^[2] := h + Round((R - h) / 255 * HowGray);
      Pixel^[0] := h + Round((G - h) / 255 * HowGray);
      Pixel^[1] := h + Round((B - h) / 255 * HowGray);

      inc(Pixel);
    end;
  end;
end;

constructor TFadeThread.Create(FadeLevel: Integer);
begin
  inherited Create(True); // Create thread as suspended
  FreeOnTerminate := True; // Fire and forget
  Priority := tpNormal; // the priority
  FParameter := FadeLevel;
end;

procedure TFadeThread.Execute;
var
  fa: integer;
begin
  fa := 255;
  while (fa > FParameter) do
  begin
    if not Terminated then Sleep(2) else Break;
    MakeGray(Form1.bmp, fa);
    Form1.PaintBox1.Canvas.Lock;
    Form1.PaintBox1.Canvas.Draw(0, 0, Form1.bmp);
    Form1.PaintBox1.Canvas.Unlock;
    if fa > 0 then dec(fa);
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  close;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  bmp := TBitmap.Create;
  ScreenCapture(bmp);

  Width := Screen.DesktopWidth;
  Height := Screen.DesktopHeight;

  Panel1.Left := (ClientRect.Right div 2) - (Panel1.Width div 2);
  Panel1.Top := (ClientRect.Bottom div 2) - (Panel1.Height div 2);

  Fade := TFadeThread.Create(196);
  Fade.Resume;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  bmp.free;
end;

procedure TForm1.PaintBox1Paint(Sender: TObject);
begin
  PaintBox1.Canvas.Draw(0, 0, bmp);
end;

end.
Warum das "Programm" aber anhält, wenn man es beim faden anklickt ist mir unklar. (Thread ?)
Miniaturansicht angehängter Grafiken
preview_207.jpg  
Angehängte Dateien
Dateityp: zip screenfade.source_662.zip (4,2 KB, 83x aufgerufen)
Dateityp: zip fade.exe_756.zip (222,1 KB, 89x aufgerufen)
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 12:54 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz