![]() |
Re: Form nicht rechteckig
Zitat:
Zitat:
Was ganz anderes: Gibt es eine Möglichkeit delphi 4 programme mit TurboDelphi weiter zuschreiben oder muss man die komplett neu schreiben? Vielen Dank schon mal.. Edit: Zitat:
Wenn es sinn machen sollte von Delphi 4 zu wechseln welches mir nahegelegt wurde: Zitat:
|
Re: Form nicht rechteckig
@KahPee
Hat sich das Thema geändert? Ich hab dir doch gerade ein Tool genannt wo du dein Problem in 30 Sekunden erledigen kannst. Willst du jetzt lieber Turbo Pascal programmieren? |
Re: Form nicht rechteckig
Zitat:
was muss ich machen beim Einbauen (uses Unit XYZ ist klar, aber was sonst [oder kommt dieses Thema in der Hilfe vor?])? Das Programm schneidet immer alles Weisse weg richtig? |
Re: Form nicht rechteckig
- GabesOddForm.exe starten
- deine Grafik öffnen (die Bereiche die später nicht sichtbar sein sollen, sollten weiß sein) - Bild scannen (Menü Image > Scan bitmap) - Datei UGabesOddForm.pas in deinem Projektordner speichern (Menü File > Save Source...) - Unit UGabesOddForm unter Uses eintragen - Prozedur in TForm1.FormCreate aufrufen: CreateOddWindow(form1.Handle, False); - Fertig |
Re: Form nicht rechteckig
Vielen Dank werde das mal zuHause austesten. Da hat jemand saubere arbeit geleistet...
|
Re: Form nicht rechteckig
Das ist ein echt Tolle Tool!
|
Re: Form nicht rechteckig
Liste der Anhänge anzeigen (Anzahl: 2)
Ich hatte das ganze mal folgendermassen gelöst, das Teil ist auch noch Win9x kompatibel:
Delphi-Quellcode:
//...
function TForm1.SetWndRegionFromImg(Bmp: TBitmap; TransparentColor: TColor): Boolean; type TTransColState = (trsOn, trsOff); TRGBQuadArray = array[WORD] of Cardinal; pRGBQuadArray = ^TRGBQuadArray; var TransColState: TTransColState; x, y: Integer; line: Integer; count: Integer; rgn, nrgn: THandle; pPixelArray: pRGBQuadArray; begin Result := TRUE; if Bmp.PixelFormat <> pf32Bit then Bmp.PixelFormat := pf32Bit; count := 0; line := 0; rgn := CreateRectRGN(0, 0, 0, 0); // First Init Region nrgn := rgn; for y := 0 to Bmp.Height - 1 do begin pPixelArray := Bmp.Scanline[y]; TransColState := trsOff; for x := 0 to Bmp.Width - 1 do begin if pPixelArray[x] <> COLORREF(TransparentColor) then begin if TransColState = trsOff then begin TransColState := trsOn; line := x - 1; inc(line); end; end else begin if TransColState = trsOn then begin TransColState := trsOff; if count < 4096 then begin nrgn := CreateRectRgn(line, y, x, y + 1); CombineRgn(Rgn, Rgn, nRgn, RGN_OR); inc(Count); end else begin ShowMessage('Debuginfo: To many Regions. Count of Rgn: '#9 + IntToStr(Count)); Application.Terminate; end; end; end; end; end; SetWindowRgn(Handle, Rgn, TRUE); DeleteObject(Rgn); DeleteObject(nRgn); end; procedure TForm1.FormCreate(Sender: TObject); const LWA_COLORKEY = 1; // Use crKey as the transparency color. LWA_ALPHA = 2; // Use bAlpha to determine the opacity of the layered window.. USER32DLL = 'user32.dll'; var _SetLayeredWindowAttributes: function(hWnd: THandle; TRansparentColor: COLORREF; AlphaValue: Byte; Flags: Cardinal): BOOL; stdcall; var hLib: THandle; begin Self.Color := clFuchsia; Self.BorderStyle := bsNone; if not (Image1.Picture.Graphic is TBitmap) then begin ShowMessage('Fehler: Image muss ein Bitmap sein !'); Application.Terminate; end; hLib := LoadLibrary(USER32DLL); @_SetLayeredWindowAttributes := GetProcAddress(hLib, 'SetLayeredWindowAttributes'); if @_SetLayeredWindowAttributes <> nil then begin SetWindowLong(Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) or WS_EX_LAYERED); _SetLayeredWindowAttributes(Self.Handle, COLORREF(clFuchsia), 250, LWA_COLORKEY or LWA_ALPHA); end else begin // alternative, im falle das es SetLayeredWindowAttributes nicht gibt SetWndRegionFromImg(Image1.Picture.Bitmap, clFuchsia); end; FreeLibrary(hLib); end; //... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:50 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