AGB  ·  Datenschutz  ·  Impressum  







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

canvas brush color clBlack geht nicht

Ein Thema von LoZe · begonnen am 29. Dez 2016 · letzter Beitrag vom 29. Dez 2016
Antwort Antwort
Seite 1 von 2  1 2      
LoZe

Registriert seit: 27. Dez 2016
Ort: Ulm
40 Beiträge
 
Delphi 12 Athens
 
#1

canvas brush color clBlack geht nicht

  Alt 29. Dez 2016, 13:57
Delphi-Version: 10 Berlin
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:

  b1 := 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);
sorry für meine dumme Frage aber ich komm echt nicht weiter
Chris

Geändert von LoZe (29. Dez 2016 um 14:37 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.295 Beiträge
 
Delphi 12 Athens
 
#2

AW: canvas brush color clBlack geht nicht

  Alt 29. Dez 2016, 16:14
Wo hast du denn die Transparenz definiert?

Häng doch mal Bilder an. Einmal mit clblue und einmal mit clblack.
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#3

AW: canvas brush color clBlack geht nicht

  Alt 29. Dez 2016, 17:44
Zitat:
einmal mit clblack.
Wie soll er das machen wenn er sagt das clBlack nicht geht?

gruss
  Mit Zitat antworten Zitat
LoZe

Registriert seit: 27. Dez 2016
Ort: Ulm
40 Beiträge
 
Delphi 12 Athens
 
#4

AW: canvas brush color clBlack geht nicht

  Alt 29. Dez 2016, 17:55
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.
Chris
  Mit Zitat antworten Zitat
LoZe

Registriert seit: 27. Dez 2016
Ort: Ulm
40 Beiträge
 
Delphi 12 Athens
 
#5

AW: canvas brush color clBlack geht nicht

  Alt 29. Dez 2016, 17:57
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?
Chris
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#6

AW: canvas brush color clBlack geht nicht

  Alt 29. Dez 2016, 17:58
Liegt wohl daran das du das Bitmap nicht frei gibst.
b1.Free;

gruss

Geändert von EWeiss (29. Dez 2016 um 18:15 Uhr)
  Mit Zitat antworten Zitat
LoZe

Registriert seit: 27. Dez 2016
Ort: Ulm
40 Beiträge
 
Delphi 12 Athens
 
#7

AW: canvas brush color clBlack geht nicht

  Alt 29. Dez 2016, 18:02
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?
Chris
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#8

AW: canvas brush color clBlack geht nicht

  Alt 29. Dez 2016, 18:05
oh ja vielen dank, so läuft es ohne den RAM vollzumachen
Vielleicht solltest du b1 mit einen Aussagekräftigen Namen versehen.

Bsp.
Delphi-Quellcode:
Bitmap : TBitmap
Bitmap := TBitmap.Create.
Aber natürlich geht auch b1.

Zitat:
wie ist das zu handeln mit dem Freimachen wann muss ich das immer machen?
Wenn du etwas erstellst musst du es auch wieder freigeben wenn es nicht mehr verwendet wird. Das ist die Grundregel.

gruss
  Mit Zitat antworten Zitat
LoZe

Registriert seit: 27. Dez 2016
Ort: Ulm
40 Beiträge
 
Delphi 12 Athens
 
#9

AW: canvas brush color clBlack geht nicht

  Alt 29. Dez 2016, 18:10
Vielen dank hat mir sehr geholfen.
werd mich an die grundregel halten

ps.: b1 ist in Bitmap geändert
Chris
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#10

AW: canvas brush color clBlack geht nicht

  Alt 29. Dez 2016, 18:14
Nochmal step by step

Delphi-Quellcode:
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
gruss
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 05:29 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