Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi TImage durchsichtig (https://www.delphipraxis.net/3931-timage-durchsichtig.html)

Schwanengel 6. Apr 2003 17:48


TImage durchsichtig
 
Ich beschäftige mich schon ne ganze Weile mit diesem Problem.
Ich habe ein Zeichenprogramm soweit fertig, aber es gelingt mir nicht eine durchsichtige Image zu erstellen. Oder was kann man da machen.
Danke für die Antwort.

Daniel B 6. Apr 2003 18:27

Hallo und herzlich Willkommen im Forum!

Ich verschieb das mal nach Multimedia!

Grüsse, Daniel :hi:

Mirilin 6. Apr 2003 20:45

Property Transparent

oder was meinst Du mit durchsichtig?

Schwanengel 6. Apr 2003 21:22

TImage transparent
 
Nochmal zurück zu meiner Frage:
Ich möchte über eine bestehende TImage die als Untergrund gilt, eine
TImage erzeugen die Transparent(durchsichtig) ist. Diese 2te TImage enthält ein TBitmap welches wiederum Transparente Farbbereiche enthält.
Oder geht das alles einfacher?
Mit der Erstellung von Komponenten kenne ich mich noch nicht aus.
Wie kann man das Problem lösen. Ich habe Delphi2.0.
Vielen Dank für die schnellen Antworten, bin angenehm überrascht...

Mirilin 6. Apr 2003 21:26

Einfacher, weiss nicht ob das einfacher ist, aber machs doch mit einer TPaintBox, und 3 TBitmaps (oder wieviele Du auch brauchst).
(TBitmap.TransparentColor ... )

Schwanengel 8. Apr 2003 17:34

Hallo ich bin's schon wieder.

Nochmals die Transparent Frage.
Kann man eine TImage, überhaupt Transparent machen unter Delphi 2.0.
Mein Zeichenprogramm ist nämlich so gut wie fertig, daher
möchte ich nicht unbedingt auf eine TPaintbox umsteigen. Macht zuviel Arbeit...

danke für die Antwort

Mirilin 8. Apr 2003 18:55

Hat das TImage in Delphi2 die Property Transparent?
Wenn ja, dann kannst Du es dort auf true setzen (nach der Hilfe geht das nur, wenn ein Bitmap im Image ist) sonst, weiss ich selber nicht wie das geht, sorry.

Schwanengel 8. Apr 2003 19:19

Halo!

Danke für Deine Antwort, aber die Property Transparent gibt's da nicht.
Könnte ich nicht die Komponente TImage als grundlage nehmen und diese
Property Transparent in einer neuen Komponente hinzufügen.

Aber hier geht's los, keine Ahnung von Komponenten erstellen,
großes Haareraufen und so :oops:

kannst Du mir helfen? :hello:

Mirilin 8. Apr 2003 19:50

Delphi-Quellcode:
unit TranspImage;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ExtCtrls;

type
  TTranspImage = class(TImage)
  private
    FTransparenz: Boolean;
    procedure SetTransparenz(const Value: Boolean);

    { Private-Deklarationen}
  protected
    { Protected-Deklarationen}
  public
    property Transparenz : Boolean read FTransparenz write SetTransparenz;
    { Public-Deklarationen}
  published
    { Published-Deklarationen }
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('MY', [TTranspImage]);
end;

{ TTranspImage }


{ TTranspImage }

procedure TTranspImage.SetTransparenz(const Value: Boolean);
begin
  FTransparenz := Value;
  Picture.Bitmap.Transparent := FTransparenz;
end;

end.
Gruss Mirilin versuchs mal so, bei mir hat es geklappt.


'Datei'->'Neu'->'Komponente'->'VorfahrTyp : TImage'...

Schwanengel 8. Apr 2003 20:54

Freude über Deine schnelle Hilfe :bounce2:

Hab's sofort Probiert

Aber wie immer ich hatte Pech, bei'm einbinden der Komponente: 'TTransparentImage'
Die Fehlermeldung die mich immer
Begleitet: undefinierter Bezeichner 'Transparent'

Vielleicht liegt hier der Hund begraben, das ich nur Delphi2.0 habe...

Einen Tag später:
Hallo Mirilin
Schnell noch ein neuer Gedanke :angle2:
Kann man nicht für das ganze, ein 'TShape' als Ausgang nehmen. Dieser
müste doch einen 'canvas' haben?
Wenn man jetzt auf dieser Basis weiter arbeitet, könnte es doch klappen.
Ich hatte festgestellt, wenn man im 'Brush.style' auf 'bsclear' stellt
habe ich die Komponente Transparent.

Schwanengel 14. Apr 2003 11:32

Hi Mirilin

Ich habe den Vorschlag mit der Paitbox angenommen.
In einen kleinen Testprogramm habe ich mit einer Paintbox Versuche angestellt.
Beim kopieren von bestimmten Bereichen aus dem 'Paintbox.canvas', wird
immer das was hinter der Paintbox ist mit Kopiert.

BEISPIEL: :coder:
Delphi-Quellcode:
Koprect:=rect(pos1,pos2,pos3,pos4);//übergabe des Bereiches
  cliprect:=rect(0,0,pos3 - pos1,pos4 - pos2);
  Bild:=Tbitmap.create;
  Bild.width:=pos3 - pos1;
  Bild.height:=pos4 - pos2;
  bild.canvas.copyrect(cliprect,paintbox.canvas,koprect);
FRAGE:
Wie kann man das vermeiden :?:

danke für Antwort

oki 14. Apr 2003 11:38

Hi,

zeichne das Bitmap doch direkt in den Canvas. Dann hast du das Transparentproblem mit dem TImage nicht.

Gruß oki

Schwanengel 14. Apr 2003 11:50

Hi oki,

danke erst mal für Deine Antwort.
Das ist mir ja alles klar, aber ich möchte einen Teil aus diesem canvas heraus kopieren.
Jetzt sollen diese kopierten Teile transparent, also nur
die Striche die ich gezeichnet hatte, wieder auf andere Stellen von diesen canvas.

schwer was :freak:

oki 14. Apr 2003 12:10

Hi,

also um es mal ganz einfach zu sagen, du mußt in deinem kopierten Teil die Hintergrundfarbe ermitteln und diese bei deinem kopierten Bitmap als transparent definieren.
Im Grunde denke ich, dass du da nur mit einer festgelegten Hintergrundfarbe als Transparentfarbe arbeiten kannst, oder du läßt den Anwender vor (bei) dem Einfügevorgang die Transparentfarbe bestimmen. Das Problem scheint hier zu sein, dass wenn das Bitmap erst mal auf den Canvas kopiert ist, dann ist das Object "weg".
Das Übereinanderlegen von mehreren Zeichnungsobjecten ist zwar eine Lösung (das willst du glaub ich auch), aber dann fangen weitere Probleme an. Ein Problem sind die Zeichnungsbegrenzungen (stell dir vor dein Stempel ist ein Dreieck und dein Object [Timage etc.] kann aber nur ein Rechteck sein). Inder Regel überlappen sie deine Stempel und bekommst Probleme mit dem "greifen" deiner Objecte. Oder du stapelst mehrere übereinander und es ergibt nich ein zusammengesetztes Bild. Was kopierst du dann? Alle, Teilmenge, oberes Object (oben/unten ist auch noch nicht geklärt)?

Also da sind Baustellen ohne Ende.

Ich glaube, du mußt erst mal sagen was das für ein Zeichenprogramm werden soll.

Frage: So was wie MSPaint? Oder sowas wie CorelDraw o.ä.?

Gruß oki

Schwanengel 14. Apr 2003 17:06

hallo,

ich glaube mit der Frage nach dem Zeichenprogramm hast Du den Nagel auf den Kopf getroffen.
Ohne viel weiter zu erklären, unter W95 das 'PBrush' zeigt es Dir was ich meine.
Hier kann ich auf der Oberfläche zeichnen und eine rechteck Kopie machen. Ich will gar nicht erst fragen, wie das geht wenn man eine Kontur kopieren will.
Die Kopie nimmt die Zeichnung auf und läßt aber den Hintergrund Transparent. :!:

Ich hoffe das Du jetzt mein Problem verstehst. :roll:

Im Grunde genommen bin ich ja auch nur ein Anfänger, ich habe viel zu spät mit der Programmiererei angefangen.


das war's mal wieder von mir

oki 15. Apr 2003 16:03

Hi Schwanengel.

Ich hab das Gefühl, dass wir hier in zwei unterschiedlichen Threads zum gleichen Problem diskutieren. Das macht mich etwas närrisch. Sag mal an welcher Stelle wir weiter arbeiten wollen und den anderen schließen wir vorerst.

Gruß oki

Schwanengel 15. Apr 2003 18:10

Hallo

Du hast recht.
Mir ist es lieb wenn wir unter 'Multimedia' weitermachen :roll:
Es ist im Grunde genommen das gleiche Problem.

Entschuldige bitte.

Aber behalte mal die Art, wie es unter 'PBrush' gemacht wird im Auge.
Damit Du ungefähr weißt was ich meine.

Tschüß bis dann :hi:


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:34 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