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 1 von 3  1 23      
toredo

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

hintergrundefekt

  Alt 12. Mai 2006, 17:27
hay,

wenn man im klassischen anmeldeverfahren bei windows auf start/herunterfahren klickt, wird der hintergrund ja langsam so schwarz/weiss und man kann im hintergrund nichts mehr anklicken.

weiss jemand von euch vielleicht wie man das machen kann?

mfG toredo
Benj Meier
  Mit Zitat antworten Zitat
Flare

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

Re: hintergrundefekt

  Alt 12. Mai 2006, 17:57
Diese Frage wurde hier schonmal irgendwann gestellt, das ist ein Screenshot, der Scharz-Weiß gemacht wurde und dann lässt Windows das Bild in das Scharz-Weiß-Bild langsam überlaufen.
Dass man nichts drücken kann liegt einfach an Windows, das ist Absicht


Flare
Willy Scheibel
  Mit Zitat antworten Zitat
toredo

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

Re: hintergrundefekt

  Alt 13. Mai 2006, 10:55
hay,

ich hab jetzt recht lange gesucht und auch viele stichworte benutzt, aber nichts gefunden, könntest du mir plz den link zu dem thread geben?


mfG toredo
Benj Meier
  Mit Zitat antworten Zitat
Flare

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

Re: hintergrundefekt

  Alt 13. Mai 2006, 10:59
Ich habe nach "Windows grau" gesucht, einen Thread gefunden der hier hin verwiesen hat, das dürfte das sein


Flare
Willy Scheibel
  Mit Zitat antworten Zitat
toredo

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

Re: hintergrundefekt

  Alt 13. Mai 2006, 11:18
thx, ich hab nur herunterfahren, schwarz/weiss und so gesucht aber gerda das was du eingegeben hast ned.^^

in dem thread wird zwar erklärt wie das ganze abläuft, aber nicht wie man das in delphi verwirklichen kann.
so ein kleines code-schnipsel-ding wär shcon ned schlecht.

mfG toredo
Benj Meier
  Mit Zitat antworten Zitat
Flare

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

Re: hintergrundefekt

  Alt 13. Mai 2006, 11:34
Du hast ja auch nur gefragt wie man das machen kann, nicht nach Code oder ähnlichem ^^

Ich kenne mich nicht mit Bitmpas aus, deswegen kann ich dir nur Vorschläge geben wie man es machen könnte.

Du hast ein Bitmap, und jedes Pixel hat einen Farbwert RGB. Diesen Farbwert musst du Zu einem Grau machen. Also bildest du den Mittelwert von den 3 Farben und machst eben in der ersten Stufe 5% Anpassung an diesen Grauwert, in der 2. Stufe 10% und so weiter. Zwischen den einzelnen Stufen lässt du das Bild immer wieder anzeigen (is ja logisch ).

Also so würde ich das machen.


Flare
Willy Scheibel
  Mit Zitat antworten Zitat
toredo

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

Re: hintergrundefekt

  Alt 13. Mai 2006, 11:45
danke für die gute anleitung

ich verstehs jetzt zimlich, also wies funzt, aber beim verwirklichen hab ich noch probs.

und mit bitmaps kenn ich mich auch ned gut aus (eigentlich kennnn ich mich (noch) mit nichts aus^^).


könnte plz einer der sich gut mit solchen dingen auskennt shcnell helfen?

danke für deine hifle Flare



mfG toredo
Benj Meier
  Mit Zitat antworten Zitat
xaromz

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

Re: hintergrundefekt

  Alt 13. Mai 2006, 12:01
Hallo,

im Grunde brauchst Du dafür drei Funktionen:
Eine, die ein Graustufenbild erzeugt.
Eine, die zwei Bilder überlagert
Eine, die diese Überlagerung in einer Schleife widerholt.

Ich hab mal diese drei Funktionen geschrieben. Du brauchst nur noch ein TImage und einen Button:
Delphi-Quellcode:
procedure ToGray(const Bitmap: TBitmap);
var
  Trip: PRGBTriple;
  P: PByte;
  PixelCount: Integer;
  C: Integer;
  Gray: Byte;
  Alignment: Byte;
begin
  if not (Bitmap.PixelFormat in [pf24Bit, pf32Bit]) then
    Exit;

  // Vorbereitungen
  P := Bitmap.ScanLine[Bitmap.Height - 1];

  // Alignment berechnen
  if (Bitmap.PixelFormat = pf24Bit) then
    Alignment := (4 - (Bitmap.Width * 3) mod 4) mod 4
  else
    Alignment := 0;

  // In einer Schleife alle Pixel durchgehen
  PixelCount := Bitmap.Width * Bitmap.Height;
  for C := 0 to PixelCount - 1 do
  begin
    //Pixel holen
    Trip := PRGBTriple(P);

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

    // Nächster Pixel
    Inc(P, 3);
    if Bitmap.PixelFormat = pf32Bit then
      Inc(P);

    // Alignment am Ende der Zeile
    if (C > 0) and (C mod Bitmap.Width = 0) then
      Inc(P, Alignment);
  end;
end;

function Fade(const Bitmap1, Bitmap2: TBitmap; Delta: Byte): TBitmap;
var
  Trip1, Trip2, TripR: PRGBTriple;
  P1, P2, PR: PByte;
  PixelCount: Integer;
  C: Integer;
  Alignment1, Alignment2, AlignmentR: Byte;

begin
  Result := nil;
  if (Bitmap1 = nil) or (Bitmap2 = nil) or
     (Bitmap1.Width <> Bitmap2.Width) or (Bitmap1.Height <> Bitmap2.Height) or
     not (Bitmap1.PixelFormat in [pf24Bit, pf32Bit]) or
     not (Bitmap2.PixelFormat in [pf24Bit, pf32Bit]) then
  Exit;

  // Vorbereiten
  Result := TBitmap.Create;
  Result.PixelFormat := pf24Bit;
  Result.Width := Bitmap1.Width;
  Result.Height := Bitmap1.Height;

  P1 := Bitmap1.ScanLine[Bitmap1.Height - 1];
  P2 := Bitmap2.ScanLine[Bitmap2.Height - 1];
  PR := Result.ScanLine[Result.Height - 1];

  // Alignment berechnen
  if (Bitmap1.PixelFormat = pf24Bit) then
    Alignment1 := (4 - (Bitmap1.Width * 3) mod 4) mod 4
  else
    Alignment1 := 0;

  if (Bitmap2.PixelFormat = pf24Bit) then
    Alignment2 := (4 - (Bitmap2.Width * 3) mod 4) mod 4
  else
    Alignment2 := 0;

  AlignmentR := (4 - (Result.Width * 3) mod 4) mod 4;

  // In einer Schleife alle Pixel durchgehen
  PixelCount := Result.Width * Result.Height;
  for C := 0 to PixelCount - 1 do
  begin
    // Pixel holen
    Trip1 := PRGBTriple(P1);
    Trip2 := PRGBTriple(P2);
    TripR := PRGBTriple(PR);

    // Faden
    TripR.rgbtBlue := Round((Trip1.rgbtBlue * Delta + Trip2.rgbtBlue * (255 - Delta)) / 255);
    TripR.rgbtGreen := Round((Trip1.rgbtGreen * Delta + Trip2.rgbtGreen * (255 - Delta)) / 255);
    TripR.rgbtRed := Round((Trip1.rgbtRed * Delta + Trip2.rgbtRed * (255 - Delta)) / 255);

    // Nächster Pixel
    Inc(P1, 3);
    Inc(P2, 3);
    Inc(PR, 3);
    if Bitmap1.PixelFormat = pf32Bit then
      Inc(P1);
    if Bitmap2.PixelFormat = pf32Bit then
      Inc(P2);

    // Alignment am Ende der Zeile
    if (C > 0) and (C mod Result.Width = 0) then
    begin
      Inc(P1, Alignment1);
      Inc(P2, Alignment2);
      Inc(PR, AlignmentR);
    end;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  B1, B2: TBitmap;
  I: Integer;
  Count, Delta: Integer;
begin
  try
    Screen.Cursor := crHourglass;
    // Bilder vorbereiten
    B1 := TBitmap.Create;
    B1.Assign(Image1.Picture.Bitmap);
    B2 := TBitmap.Create;
    B2.Assign(B1);
    ToGray(B2);

    // Die Schleife
    // einfach mal mit den Werten spielen,
    // aber (Count - 1) * Delta darf nicht größer sein als 255!
    Count := 20;
    Delta := 12;
    for I := 0 to Count - 1 do
    begin
      Image1.Picture.Bitmap := Fade(B1, B2, 255 - I * Delta);
      Image1.Update;
    end;
  finally
    B2.Free;
    B1.Free;
    Screen.Cursor := crDefault;
  end;
end;
Gruß
xaromz
  Mit Zitat antworten Zitat
toredo

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

Re: hintergrundefekt

  Alt 13. Mai 2006, 12:11
hay,

thx für den code
ich hab einfach gemacht, dass man nicht auf nen button klicken muss, sondern, dass das alles am anfang wenn die form1 gemacht wird passieren soll.

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?
weil n'TImage kann man ja nicht auserhalb der form hinsetzen^^


mfG toredo
Benj Meier
  Mit Zitat antworten Zitat
Benutzerbild von Manne
Manne

Registriert seit: 8. Okt 2003
Ort: Hirrlingen
82 Beiträge
 
Delphi 7 Personal
 
#10

Re: hintergrundefekt

  Alt 13. Mai 2006, 12:12
Servus,
hab mal vor über einem Jahr damit angefangen eine Komponente zu schreiben, die gerade den XP-Shutdowneffekt nachahmt.
Die Quelltexte sind ziemlich konfus, nicht doukumentiert. Wollte alles "professionell" machen . Vllt. checkst du durch.
Man braucht glaube ich noch folgende
Kopmenenten :
Have Fun

Manne

[edit]Ich idiot sollte die datei auch anhängen [/edit]
Angehängte Dateien
Dateityp: zip fade__xp__587.zip (737,6 KB, 33x aufgerufen)
So 6 wie wir 5 gibt es keine 4 andere, denn wir 3 sind die 2 1sten
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 10:23 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