AGB  ·  Datenschutz  ·  Impressum  







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

Zwei Malebenen

Ein Thema von Jibiel · begonnen am 2. Nov 2006 · letzter Beitrag vom 4. Nov 2006
Antwort Antwort
Seite 1 von 3  1 23      
Jibiel

Registriert seit: 9. Jul 2006
15 Beiträge
 
#1

Zwei Malebenen

  Alt 2. Nov 2006, 18:08
Guckguck

für ein Projekt brauche ich 2 Malebenen, eine für den Hintergrund, die zweite für kleine Animationen.
Hier im Forum haben die meisten zwei Bilder mit TBitmap verknüpft, aber ich lad ja gar keine Bilder von meiner Festplatte, sondern male bisher direkt auf das Formular

Meine Frage wäre, ob ich stattdessen am besten zB zwei TPaintBoxen oder TImage benutze und wie ich es schaffe die vordere Paintbox mit der hinteren verschmelzen zu lassen.
Unter den Eigenschaften von den beiden konnte ich nicht wirklich etwas finden, was mir da weiterhelfen konnte :/

Jibi
:>
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Zwei Malebenen

  Alt 2. Nov 2006, 18:13
Du könntest auch TImage32 von Graphics32 nehmen. Dort werden mehrere Ebenen unterstützt.
Markus Kinzler
  Mit Zitat antworten Zitat
Jibiel

Registriert seit: 9. Jul 2006
15 Beiträge
 
#3

Re: Zwei Malebenen

  Alt 2. Nov 2006, 18:23
Du weisst nicht zufällig auch mit welcher Eigenschaft ich das zweite TImage32 durchsichtig kriege?
Image322.color := ?;

Welche "Farbe" müsste ich für das Fragezeichen einsetzen? bei transparent wird es nur schwarz.

Jib
:>
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Zwei Malebenen

  Alt 2. Nov 2006, 18:30
Du mußt die farbe nehmen, welche du als transparent deklariert hast.
Markus Kinzler
  Mit Zitat antworten Zitat
DocE

Registriert seit: 25. Mär 2004
108 Beiträge
 
#5

Re: Zwei Malebenen

  Alt 2. Nov 2006, 18:33
Wenn Du direkt aufs Form zeichnen möchtest, würde ich die Ebenen einfach in "umgekehrter" Reihenfolge zeichnen, also die unterste zuerst. Dann kannst Du das zwar nicht so einfach verschieben, müßte aber den gleichen Effekt bringen, wie mehrere Images übereinander oder ein Image mit mehreren Ebenen.

[EDIT]Gerade erst gelesen, dass die zweite Ebene Animationen beinhalten soll... Dann bringt das natürlich nichts...[/EDIT]

Grüsse
...Doc
  Mit Zitat antworten Zitat
Jibiel

Registriert seit: 9. Jul 2006
15 Beiträge
 
#6

Re: Zwei Malebenen

  Alt 2. Nov 2006, 18:52
TImage32 besitzt die Eigenschaft .transparent nicht, TImage schon. Damit klappt es nun prima und hoffentlich gleich auch beim komplizierteren Programm^^

danke für die Hilfe :>
:>
  Mit Zitat antworten Zitat
Jibiel

Registriert seit: 9. Jul 2006
15 Beiträge
 
#7

Re: Zwei Malebenen

  Alt 2. Nov 2006, 19:41
Direkt das nächste Problem, bei dem ich nicht weiter weiß :/
Die erste Unit besitzt eine Komponente vom Typ TImage. In der Unit2 möchte ich auf diese zugreifen und in ihr ein Rechteck zeichnen.


Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, GR32_RangeBars, GR32_Image, Unit2, StdCtrls, ColorGrd, ExtCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Image1: TImage;
    procedure Button1Click(Sender: TObject);
  end;

var
  Form1: TForm1;
  Haus1: THaus;
implementation

procedure TForm1.Button1Click(Sender: TObject);
begin
Haus1 := THaus.create(Form1, Image1);
end;

end.

Delphi-Quellcode:
unit Unit2;

interface

uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;
  
type Thaus = class(Tobject)
  private
   zformular : Tform;
   zimghinten : TImage;
  public
   constructor create(formular : Tform; imghinten : TImage); virtual;
   procedure Zeichnen;
  end;

implementation

constructor THaus.create(formular : Tform; imghinten : TImage);
begin
  inherited create;
  zformular := formular;
  zimghinten := imghinten;
end;

procedure THaus.Zeichnen;
begin
  zformular.zimghinten.Canvas.Rectangle(5,5,20,20);
end;

In der zweiten Unit in der Prozedur Zeichnen; beschwert er sich, dass zimghinten ein undefinierter Bezeichner ist, aber zformular kennt er. Wie kann ich von Unit2 aus auf Komponenten von Unit1 zugreifen, wenn nicht so?
:>
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Zwei Malebenen

  Alt 2. Nov 2006, 19:45
Delphi-Quellcode:
Uses Unit1, ...;

Form1.Image1.
Markus Kinzler
  Mit Zitat antworten Zitat
DocE

Registriert seit: 25. Mär 2004
108 Beiträge
 
#9

Re: Zwei Malebenen

  Alt 2. Nov 2006, 20:03
Das liegt daran, dass Du zformular als TForm ansprichst. Das TForm kennt Deine Komponente aber (noch) nicht. Also entweder:

Delphi-Quellcode:
constructor THaus.create(formular : TForm1; imghinten : TImage); // <-- hier TForm1
begin
  inherited create;
  zformular := formular;
  zimghinten := imghinten;
end;
und natürlich dann auch
Delphi-Quellcode:
private
   zformular : TForm1;
- oder -


Delphi-Quellcode:
procedure THaus.Zeichnen;
begin
  TForm1(zformular).zimghinten.Canvas.Rectangle(5,5,20,20);
end;

Grüsse
...Doc
  Mit Zitat antworten Zitat
Jibiel

Registriert seit: 9. Jul 2006
15 Beiträge
 
#10

Re: Zwei Malebenen

  Alt 2. Nov 2006, 20:20
@mkinzler [Fataler Fehler] Unit1.pas(7): Überkreuzender Bezug zweier Units auf 'Unit1'
klappt nicht :/

@Doc woimmer ich TForm1 in der Unit2 benutze, beschwert er sich, dass auch TForm1 ein undefinierter Bezeichner wäre.

Was mach ich da noch falsch?
:>
  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 18:48 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