Browse Source

Rahmen mit 3D Effekt hinzugefügt

kolja 5 years ago
parent
commit
8124994de2
2 changed files with 88 additions and 1 deletions
  1. 71 1
      Rahmen.cpp
  2. 17 0
      Rahmen.h

+ 71 - 1
Rahmen.cpp

@@ -63,7 +63,7 @@ Rahmen *Rahmen::getThis()
 }
 
 
-// Inhalt der Rahmen Klasse aus Rahmen.h
+// Inhalt der LRahmen Klasse aus Rahmen.h
 // Konstruktor 
 LRahmen::LRahmen()
     : Rahmen()
@@ -120,6 +120,76 @@ Zeichnung *LRahmen::dublizieren() const // Kopiert das Zeichnung
 }
 
 Rahmen *LRahmen::release()
+{
+    --ref;
+    if( ref == 0 )
+        delete this;
+    return 0;
+}
+
+
+// Inhalt der Rahmen3D Klasse aus Rahmen.h
+// Konstruktor 
+Rahmen3D::Rahmen3D()
+    : Rahmen()
+{
+    alpha = 1;
+    farbe = 0x70FFFFFF;
+    br = 5;
+}
+
+// Destruktor
+Rahmen3D::~Rahmen3D()
+{}
+
+void Rahmen3D::render( Bild &Obj ) // Zeichnet den Rahmen in das RenderZeichnung
+{
+    Zeichnung::render( Obj );
+    int x = pos.x;
+    int y = pos.y;
+    int b = x + gr.x - 1;
+    int h = y + gr.y - 1;
+    int fcomp = ( farbe & 0xFF000000 ) | ( ~farbe & 0x00FFFFFF );
+    if( alpha )
+    {
+        for( int i = 0; i < br; ++i )
+        {
+            Obj.drawLinieHAlpha( x + i + 1, y + i, gr.x - i * 2 - 1, farbe );
+            Obj.drawLinieVAlpha( b - i, y + i + 1, gr.y - i * 2 - 2, farbe );
+            Obj.drawLinieHAlpha( x + i + 1, h - i, gr.x - i * 2 - 1, fcomp );
+            Obj.drawLinieVAlpha( x + i, y + i, gr.y - i * 2, fcomp );
+        }
+    }
+    else
+    {
+        for( int i = 0; i < br; ++i )
+        {
+            Obj.drawLinieH( x + i + 1, y + i, gr.x - i * 2 - 1, farbe );
+            Obj.drawLinieV( b - i, y + i + 1, gr.y - i * 2 - 2, farbe );
+            Obj.drawLinieH( x + i + 1, h - i, gr.x - i * 2 - 1, fcomp );
+            Obj.drawLinieV( x + i, y + i, gr.y - i * 2, fcomp );
+        }
+    }
+}
+
+Zeichnung *Rahmen3D::dublizieren() const // Kopiert das Zeichnung
+{
+    Rahmen *obj = new LRahmen();
+    obj->setPosition( pos );
+    obj->setSize( gr );
+    obj->setMausEreignisParameter( makParam );
+    obj->setTastaturEreignisParameter( takParam );
+    obj->setMausEreignis( mak );
+    obj->setTastaturEreignis( tak );
+    if( toolTip )
+        obj->setToolTipText( toolTip->zText()->getText(), toolTip->zBildschirm() );
+    obj->setAlpha( alpha );
+    obj->setFarbe( farbe );
+    obj->setRamenBreite( br );
+    return obj;
+}
+
+Rahmen *Rahmen3D::release()
 {
     --ref;
     if( ref == 0 )

+ 17 - 0
Rahmen.h

@@ -64,6 +64,23 @@ namespace Framework
         //  return: 0.
         __declspec( dllexport ) Rahmen *release() override;
     };
+
+    class Rahmen3D : public Rahmen
+    {
+    public:
+        // Konstruktor 
+        __declspec( dllexport ) Rahmen3D();
+        // Destruktor
+        __declspec( dllexport ) virtual ~Rahmen3D();
+        // Zeichnet den Rahmen
+        //  zRObj: Das Bild, in den der Rahmen gezeichnet werden soll
+        __declspec( dllexport ) void render( Bild &zRObj ) override;
+        // Kopiert den Rahmen, so dass er ohne auswirkungen auf das Original verändert werden kann
+        __declspec( dllexport ) Zeichnung *dublizieren() const override;
+        // Verringert den Reference Counting Zähler. Wenn der Zähler 0 erreicht, wird das Objekt automatisch gelöscht.
+        //  return: 0.
+        __declspec( dllexport ) Rahmen *release() override;
+    };
 }
 
 #endif