AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Bitmap Transparent auf ein Formular über andere Komponenten zeichnen
Thema durchsuchen
Ansicht
Themen-Optionen

Bitmap Transparent auf ein Formular über andere Komponenten zeichnen

Ein Thema von jayjay77 · begonnen am 2. Aug 2016 · letzter Beitrag vom 8. Aug 2016
 
jayjay77

Registriert seit: 29. Okt 2013
7 Beiträge
 
Delphi 10.4 Sydney
 
#1

Bitmap Transparent auf ein Formular über andere Komponenten zeichnen

  Alt 2. Aug 2016, 23:57
Hallo,
ist es möglich ein BMP dynamisch auf einem Formular übergeordnet über alle Kompetenten zu zeichnen?
Im Moment zeichne ich auf den Screen(leider nicht Transparent) und nicht auf das Formular.

Die Idee dahinter:
Bei einer Fehleingabe kann man mit z.B. Edit1.SetFocus, der Komponente den Focus übergeben.
Jetzt möchte ich noch zusätzlich, dass ein Pfeil.bmp geladen und neben dem Edit1 Transparent gezeichnet wird.
Damit der User genau sieht, "Hallo, hier stimmt was nicht".


Folgende Aufrufe habe ich schon



Code:
    If Edit1.Text ='0'Then
     Begin
      ShowMessage('Fehler.....');
      Edit1.Text:='';
      Edit1.SetFocus;
      Get_HintPos(Form1,Edit1);
      Exit;
     End;
Code:
//Position der Komponente zum positionieren herausfinden
procedure Get_HintPos(Formular:TForm;KKomp:TControl);
var
 i                          : integer;
 P                          : TPoint;
 Hint_KLeft                 : Integer;
 Hint_KTop                  : Integer;
 Hint_KWidth                : Integer;
 Hint_KHeight               : Integer;
 Hint_Form                  : TForm;
 Hint_KompName              : String;
 Hint_Komp                  : TControl;
 Hint_X                     : Integer;
 Hint_Y                     : Integer;
begin
   for i := 0 to Formular.ComponentCount -1 do
   if (Formular.Components[i] is TControl) then
   begin
      if KKomp.Name = Formular.Components[i].Name then
       begin
        P:=KKomp.ClientToScreen(Point((Formular.Components[i] as TControl).Left, (Formular.Components[i] as TControl).Top));
        Hint_Form   := Formular;
        Hint_Komp   := KKomp;
        Hint_KompName:= KKomp.Name;
        Hint_X      := P.X;
        Hint_Y      := P.Y;
        HintK_Left  := (Formular.Components[i] as TControl).Left;
        HintK_Top   := (Formular.Components[i] as TControl).Top;
        HintK_Width := (Formular.Components[i] as TControl).width;
        HintK_Height := (Formular.Components[i] as TControl).Height;
        break;
       end;
   end;
   Set_Hint(Formular,Hint_X,Hint_Y);
end;

//Bild zeichnen
procedure Set_Hint(Formular:TForm;x,y:Integer);
var
  Bitmap         : TBitmap;
  ScreenDC       : HDC;
begin
  try
   ScreenDC := GetWindowDC(0);
   Bitmap:= TBitmap.Create;
   Bitmap.PixelFormat := pf32bit;
   Bitmap.HandleType := bmDIB;
   Bitmap.Transparent := True;
   Bitmap.TransparentColor := clwhite;
   Bitmap.LoadFromFile('c:\......bmp');
   BitBlt(ScreenDC, x, y, Bitmap.Width, Bitmap.Height, Bitmap.Canvas.Handle, 0, 0, SRCCOPY);
  finally
    Bitmap.Free;
    ReleaseDC(0, ScreenDC);
  end;
end;
  Mit Zitat antworten Zitat
 


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 09:02 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