![]() |
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. |
Hallo und herzlich Willkommen im Forum!
Ich verschieb das mal nach Multimedia! Grüsse, Daniel :hi: |
Property Transparent
oder was meinst Du mit durchsichtig? |
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... |
Einfacher, weiss nicht ob das einfacher ist, aber machs doch mit einer TPaintBox, und 3 TBitmaps (oder wieviele Du auch brauchst).
(TBitmap.TransparentColor ... ) |
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 |
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. |
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: |
Delphi-Quellcode:
Gruss Mirilin versuchs mal so, bei mir hat es geklappt.
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. 'Datei'->'Neu'->'Komponente'->'VorfahrTyp : TImage'... |
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. |
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:
FRAGE:
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); Wie kann man das vermeiden :?: danke für Antwort |
Hi,
zeichne das Bitmap doch direkt in den Canvas. Dann hast du das Transparentproblem mit dem TImage nicht. Gruß oki |
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: |
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 |
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 |
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 |
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 02:35 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