![]() |
Delphi-Version: 10 Berlin
canvas brush color clBlack geht nicht
Hallo, ich bin ganz neu in Delphi.
ich versuch grad ein Rechteck zu zeichnen welches schwarz gefüllt wird und eine tranzparenz hat. Farbig geht es nur schwarz wird nicht angezeigt was habe ich übersehen
Delphi-Quellcode:
sorry für meine dumme Frage aber ich komm echt nicht weiterb1 := TBitmap.Create; b1.SetSize(1000,1000); b1.Canvas.Brush.Color:=clBlue; // hier sollte clBlack rein b1.Canvas.FillRect(Rect(0,0,1000,1000)); form5.Canvas.Draw(0,0,b1,$15); |
AW: canvas brush color clBlack geht nicht
Wo hast du denn die Transparenz definiert?
Häng doch mal Bilder an. Einmal mit clblue und einmal mit clblack. |
AW: canvas brush color clBlack geht nicht
Zitat:
gruss |
AW: canvas brush color clBlack geht nicht
vielen dank für die Antwort,
durch dein nachfragen ist mir aufgefallen das man in dem Form noch die TransparentColor und Value einstellen kann und die war auf Schwarz. jetzt wird schwarz auch angezeigt. nur hab ich nur noch das Problem das der Arbeitsspeicher immer mehr wird bis er voll ist und das system einfriert. Unten mal der ganze Code, es soll dieser Matrix Rain Effekt sein.
Delphi-Quellcode:
unit Unit5;
interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls; type TForm5 = class(TForm) Timer1: TTimer; procedure Timer1Timer(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form5: TForm5; screenx: integer; screeny: integer; y,x: integer; drop: array[0..200] of integer; chars: string; fsizey,fsizex: integer; colums,rows: integer; neuerwert: integer; implementation {$R *.dfm} procedure draw(); var b1: TBitmap; i: integer; vertikal: integer; begin b1 := TBitmap.Create; b1.SetSize(screenx,screeny); b1.Canvas.Brush.Color:=clblack; b1.Canvas.FillRect(Rect(0,0,screenx,screeny)); for i:= 0 to colums do begin if (drop[i] < rows) and (drop[i] > -1) then begin form5.Canvas.TextOut(i * fsizex, drop[i] * fsizey, chars[random(length(chars))]); neuerwert:= drop[i] + 1; drop[i]:= neuerwert; end else begin drop[i]:=-1; end; if (drop[i] = -1) then begin if random(40) = 1 then begin drop[i]:= 0 end; end; end; form5.Canvas.Draw(0,0,b1,$15); if y < rows then y:= y + 1; if y = rows then y:= 0; end; procedure TForm5.FormCreate(Sender: TObject); var i: integer; begin form5.Width:= 1920; form5.Height:= 1080; screenx:= form5.Width; screeny:= form5.Height; form5.Canvas.Font.Name := 'Segoe UI'; form5.Canvas.Font.Color := clAqua; form5.Canvas.Font.Style := []; form5.Canvas.Font.Height := 20; form5.Canvas.Brush.Style:=bsClear; fsizex:= 10; // Vertikaler Abstand fsizey:= 20; // Horizontaler Abstand colums:= screenx div fsizex; rows:= screeny div fsizey; chars:= 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890~!@#$%^&*()-_=+`[]{};:?/.,<>\\|'; y:=0; for i:= 0 to colums do begin drop[i]:= 0; end; end; procedure TForm5.Timer1Timer(Sender: TObject); begin draw end; end. |
AW: canvas brush color clBlack geht nicht
meine Vermutung ist das er immer wieder bilder öffnet bis er dan Ram voll hat kann ich irgendwie eine Begrenzung rein machen das er nur 50 oder so öffnet und die alten dann löscht?
|
AW: canvas brush color clBlack geht nicht
Liegt wohl daran das du das Bitmap nicht frei gibst.
b1.Free; gruss |
AW: canvas brush color clBlack geht nicht
oh ja vielen dank, so läuft es ohne den RAM vollzumachen.
wie ist das zu handeln mit dem Freimachen wann muss ich das immer machen? also nicht im code sondern in welchen situationen? |
AW: canvas brush color clBlack geht nicht
Zitat:
Bsp.
Delphi-Quellcode:
Aber natürlich geht auch b1.
Bitmap : TBitmap
Bitmap := TBitmap.Create. Zitat:
gruss |
AW: canvas brush color clBlack geht nicht
Vielen dank hat mir sehr geholfen.
werd mich an die grundregel halten :-D ps.: b1 ist in Bitmap geändert |
AW: canvas brush color clBlack geht nicht
Nochmal step by step
Delphi-Quellcode:
gruss
var
Bitmap: TBitmap; begin Bitmap := TBitmap.Create; // zeichne oder mach was mit Bitmap // ... // Speicher Freigeben Bitmap.Free; // oder Speicher Freigeben und das Object TBitmap auf Nil setzen. FreeAndNil(Bitmap); end |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:19 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