Programmiermodule

Eine Einführung in die einfache und flexible Plugin-Architektur von Project Dogwaffle.



 

Dieses Dokument umfasst die folgenden Themen:

Einführung

Erste Schritte

Warum Visual Basic?

Optimierung

Plugin-Beispiel (VB 5/6)

VB.net-Beispiel

Referenz zu Plug-in-Schnittstellenfunktionen (Alphabetisch)

 

Andere Dokumente

Beispiele für Plug-in-Schnittstellenfunktionen Viele Beispiele für allgemeine Funktionen. (VB 5/6)

Visuelle Stile

 

Herunterladen des Visual Basic-Quellcodes für die Plug-ins

 plugin_EXAMPLE.zip Diese Plug-ins sind Open Source und können für jeden Zweck verwendet werden.

Barebone-Projekte Projekte mit und ohne Benutzeroberfläche. Starten Sie hier für den schnellsten Start.


 

 

Einführung

"Es erfordert nur eine Codezeile, um die Dinge in Gang zu bringen!"

 

Sie interessieren sich für das spannende Gebiet der Computergrafikprogrammierung, haben aber nicht die Zeit oder die Ressourcen, Ihre eigene High-End-Anwendung zu entwickeln? Möchten Sie nicht eine Möglichkeit haben, Ihre eigenen Routinen zu erstellen und zu testen, ohne die Mühe von Low-End-Hardware-Abstraktionen und archaischen Programmierstrukturen? Möchten Sie nicht in einer benutzerfreundlichen High-End-Umgebung arbeiten, in der Sie dennoch schnellen und flexiblen Code schreiben können? Nun, Sie können das tun, und Ihre eigene Funktionalität zu einem leistungsstarken und wachsenden Grafik-Arbeitspferd gleichzeitig beitragen!

 

Project Dogwaffle Plugins sind Standard-ausführbare Programme, die in fast jeder Sprache geschrieben werden können, die ActiveX unter Microsoft Windows unterstützt, aber hier konzentrieren wir uns auf Visual Basic Professional oder Enterprise Edition 5 oder 6, und VB net. "Standard Editions" von Visual Basic sind möglicherweise funktionsfähig, werden jedoch in diesem Dokument nicht unterstützt.

 

compon1.gifDer Einfachheit halber wird empfohlen, dass ein Plug-in nur Steuerelemente verwendet, die von Project Dogwaffle verwendet werden. Dadurch können Plugins ohne Installationsprogramm verteilt werden, da diese Komponenten bereits installiert sind. Es wird empfohlen, zusätzliche Komponenten oder Verweise zu entfernen.

Die Plug-in-Schnittstelle verwendet die in Visual Basic integrierte ActiveX-Automatisierung. Es erfordert nur eine Codezeile, um die Dinge in Gang zu bringen! Eine Namenskonvention wird bereitgestellt, damit Dogwaffle seine Plug-ins sauber kategorisieren kann.

 

Ausführbare Dateien werden mit "_pf" für einen Filter, "_pi" für Importeure, "_px" für Exporteure, "_pb" für Plugins, die auf Pinsel wirken, und "_pm" für Plugins, die nicht in eine der anderen Kategorien fallen, angehängt.

 

Um weitere Informationen zu allen verfügbaren Funktionen und deren Beschreibungen zu erhalten, erstellen Sie einen Verweis auf dogwaffle in Visual Basic (Menü Projekt/Verweise...) und verwenden Sie den Objektbrowser (Menü Ansicht).

 

Das Dogwaffle-Objekt

 

Um auf die Funktionen der Plug-in-Benutzeroberfläche zuzugreifen, erstellen Sie ein Dogwaffle-Objekt. Es klingt beängstigend, aber es ist wirklich ganz einfach - nur eine Zeile (oder zwei, wenn Sie die dim-Anweisung für das Objekt zählen) Danach funktioniert alles so, wie Sie es in Visual Basic gewohnt sind.

 

            'Erstellen eines Dogwaffle-Objekts

            Dim Dogwaffle als Objekt

            Set Dogwaffle = CreateObject("Dogwaffle.Dogwaffle_Class")

 

            'Jetzt können Sie jede Dogwaffle-Methode (oder -Funktion) wie diese verwenden

            'Dogwaffle.Refresh' aktualisiert beispielsweise die Bilder der Puffer.

 

 

Von Project Dogwaffle verwendete Steuerelemente

Beachten Sie, dass diese Komponenten für kein Plug-in erforderlich sind, jedoch ohne die Notwendigkeit eines Installationsprogramms verwendet werden können, da sie von Project Dogwaffle installiert werden.

 

Um Komplikationen bei der Installation des Plug-ins auf anderen Systemen zu vermeiden, sollten Sie nur diese Steuerelemente verwenden. Sie können Komponenten und Verweise zu den Menüelementen Projekt/Komponente... und Projekt/Verweise... im Visual Basic-Editor hinzufügen oder daraus entfernen.

 

Microsoft Common Dialog Control 6.0 (SP3)

Microsoft Flexgrid Control 6.0 (sp3)

Microsoft Rich TextBox-Steuerelement 6.0

Microsoft Windows Common Controls 5.0 (SP2)

Kegelradgetriebe

Schaltflächen-Gadget

Gadget für horizontale Eigenschaften

Lens Flare Rendering und mehr ... Schließlich

Gadget für gegenseitig ausschließende Schaltflächen

 

 

Erste Schritte 

 

newproject.gifUm ein neues Plug-in zu starten, öffnen Sie ein standardmäßiges exe-Projekt.

 

newmod1.gifErstellen Sie ein neues Modul, das Ihren Plugin-Code enthält. Bei einem Plugin mit einer Schnittstelle ist dies der Startcode.
















 

removeform.gifWenn Ihr Plug-in keine Schnittstelle erfordert, entfernen Sie einfach das Standardformular aus dem Projekt.

 

startupoptions.gif

Stellen Sie das Startobjekt auf Sub Main ein. Dadurch beginnt die Programmausführung mit Ihrem eigenen benutzerdefinierten Startcode

Fügen Sie nun eine "Sub-Main"-Prozedur hinzu:


Sub-Main


'Erstellen eines Dogwaffle-Objekts

Dim Dogwaffle als Objekt


"Wenn Sie das Dogwaffle-Objekt außerhalb dieser Prozedur verwenden möchten, deklarieren Sie es oben (außerhalb der Prozedur) wie folgt: Öffentliche Dogwaffle als Objekt


Set Dogwaffle = CreateObject("Dogwaffle.Dogwaffle_Class")


"Fügen Sie hier Ihren eigenen Code hinzu.

Ende unter


Gehen Sie zu Plug-in-Beispiele

 

 

Erstellen eines Plug-ins mit einer Benutzeroberfläche

 

newform.gif

Häufig benötigt ein Plugin Eingaben vom Benutzer. Wenn Sie wissen, dass Sie eine Benutzeroberfläche für Ihr Projekt benötigen, entfernen Sie das Formular nicht aus dem vorherigen Schritt oder fügen Sie einfach eine neue hinzu. Entwerfen Sie das Formular wie gewohnt in Visual Basic. Es könnte ungefähr so aussehen wie die Abbildung. Wenn Sie das Formular öffnen möchten, denken Sie daran, dass wir die Startoption so geändert haben, dass unser benutzerdefinierter Startcode ausgeführt wird, sodass das Formular standardmäßig nicht geöffnet wird. Deshalb müssen wir das Formular selbst öffnen. Wir könnten es wie üblich öffnen:

 

Form1.show

 

Dadurch würde das Formular geöffnet, aber da Plugins unabhängige ausführbare Programme sind, würde es außerhalb des Hauptfensters von Project Dogwaffle geöffnet. Um dies zu kompensieren, senden wir eine Kopie des Formulars wie folgt an die Plug-in-Oberfläche:

 

Dim NewWindow As Form

Dim showmode As Integer

Set NewWindow = Form1

showmode = 0

Dogwaffle.Dog_SendFormObject(NewWindow, showmode) aufrufen

 

Der erste Parameter ist das Formular selbst, der zweite Parameter ist 0 für modalen und 1 für nicht modalen Betrieb.

 

 


 

 

Warum Visual Basic?

"Das Ergebnis war eine Programmierschnittstelle, die nicht einfacher oder leistungsfähiger sein konnte!"

 

Das Ziel der Plugin-Schnittstelle war es, vollständig asynchron zu sein, sodass die Methode der Verknüpfung mit dlls, die von anderen Grafiksoftware verwendet wurde, nicht die beste Lösung war. Microsoft Windows enthält eine Reihe von Kommunikations-Port-Typen, leider keine davon, wenn besonders einfach oder geeignet für die Anwendung. Außerdem wird die Übergabe von Speicherzeigern zwischen Anwendungen unter Windows aufgrund des Speicherschutzschemas nicht ohne Marshalling unterstützt. Ein Ansatz für die Skriptsprache wurde ebenfalls in Betracht gezogen, erwies sich jedoch als zu langsam.

 

Anschließend wurde festgelegt, das Programm zu einem ActiveX-Host zu machen. Es war so etwas wie ein Kompromiss, aber das Ergebnis war eine Programmierschnittstelle, die nicht einfacher oder leistungsfähiger sein konnte! Die ActiveX-Technologie ist für Visual Basic-Programmierer transparent, und mit ein wenig Know-how kann Visual Basic ziemlich schnell sein.

            

 


 

 

Optimierung

Leistung in Visual Basic.

 

Beachten Sie, dass sich diese Beispiele auf Visual Basic 5 und 6, Professional oder Enterprise Edition mit Native Code Compiler beziehen. Visual Basic Net wird etwas andere Anforderungen haben.

 

Viele Leute wissen nicht, dass Visual Basic eigentlich ziemlich schnell ist. Der Grund dafür ist wahrscheinlich, dass er nicht mehr "sicher" ist. Im Folgenden erfahren Sie, wie Sie Code in Visual Basic in drei einfachen Schritten schneller ausführen können...

 

Deklarieren Sie stets Variablen. Wenn sie nicht deklariert ist, werden für Variablen standardmäßig "Variante" verwendet. Varianten sind sehr langsam. Dim-Variablen als Ganzzahl oder Long, wenn möglich. Lass dir das nicht passieren..."

 

            Dim x,y,z,r,g,b als Länge

 

Es sollte...

 

            Dim X so lang, y so lang, z so lang, r so lang, g so lang, b so lang

 

Wenn die erste Syntax verwendet würde, würde nur die letzte Variable als long deklariert und der Rest als Standard, Varianten, die langsam sind!

 

Aktivieren Sie alle Optimierungsoptionen beim Kompilieren einer Anwendung. Dafür sind sie da.

 

Schreiben Sie guten Code. Ok, das ist nicht unbedingt so einfach wie die anderen zwei. Versuchen Sie im Allgemeinen, den Arbeitsaufwand in der inneren Schleife zu reduzieren. Bände könnten über das Thema geschrieben werden und wahrscheinlich haben, aber nicht von mir.

 

VB hat einen weiteren netten Optimierungstrick mit Division. Es gibt zwei Divisionsoperatoren, die "/"- und "\"-Operatoren. Die, mit der Sie wahrscheinlich am besten vertraut sind, ist "/", was wie ein normales Divisionszeichen aussieht, und das ist es auch. Der Haken ist, dass "/" für Gleitkommamathematik gedacht ist. Jedes Mal, wenn Sie es verwenden, auch mit Integer- und Long-Variablen, muss alles zu Gleitkommavariablen gezwungen werden. Mit dem ganzzahligen Divisionsoperator "\" können Sie ganze Zahlen dividieren, was viel schneller sein kann, wenn es alles ist, was Sie benötigen.

 

 


 

 

 

Referenz zu Plug-in-Schnittstellenmethoden (alphabetisch):

 

*Mit dem Objektbrowser von Visual Basic können Sie diese über die IDE durchsuchen.

 

* Hinweis: VB.Net erfordert eine Änderung der Datentypen. VB5/6 verwendet 32-Bit-Längen und 16-Bit-Ganzzahlen. VB.Net verwendet 64-Bit-Längen und 32-Bit-Ganzzahlen. Die Verwendung von VB5/6 wird in diesem Dokument angenommen, sofern nicht anders angegeben. Ausführliche Informationen finden Sie in der Dokumentation zur VB.net-Migration .

 

Kontaktieren Sie die Entwickler.

 

Sub Dog_ActivateCustomBrush()

    Aktiviert das benutzerdefinierte Pinselwerkzeug 

Sub Dog_AlphaOff() 

    Schaltet den Alphakanal aus (wobei der Alpha-Wert im Speicher beibehalten wird)

Sub Dog_AlphaOn() 

    Aktiviert den Alphakanal

Funktion Dog_Animbrush_CurrentFrame() Solange

    Ruft den aktuellen Frame des Animusheets ab

Sub Dog_Animbrush_Next() 

    Wechselt zum nächsten Bild in einem Animussel, abhängig von der Wiedergaberichtung.

Eigenschaft Dog_BufferHeight als Ganzzahl 

    lesendnur

    Die Höhe des Hauptpuffers in Pixel

Eigenschaft Dog_BufferWidth als Ganzzahl

    lesendnur

    Die Breite des Hauptpuffers in Pixel

Sub Dog_ChangeBarImage(Dateiname als Zeichenfolge) 

    Ändert das Bild der Statusleiste. Das Bild ist ein bmp oder jpeg mit 160 x 15.

Sub Dog_ChangePointer(Anzahl wie lang) 

    Ändert den Mauszeiger.

Sub Dog_CopyBrush()

    Kopiert den aktuellen benutzerdefinierten Pinsel in die Zwischenablage              

Sub Dog_CreateAnim(Frames in der Länge)

    Erstellt eine Animation mit der angegebenen Anzahl an Frames

Sub Dog_CreateAnimAdv(Rahmen so lang, Markierungen so lang)

    Erstellt eine neue Animation mit einigen erweiterten Einstellungen.

    Markierungen

    'bit 1 not set=Erstbild nicht kopieren. Set=alle Frames erhalten Kopie des ersten Frames.

    'Bit 2 set=Aktuelle Animation löschen, falls vorhanden.

Funktion Dog_CreateEmptyBrush(BrushWidth, BrushHeight) 

    Erstellt einen neuen leeren benutzerdefinierten Pinsel in der angegebenen Größe. Rückgabe -1, wenn nicht erstellt werden konnte.

Sub Dog_CreateNewAnBr(Frames in der Länge) 

    Erstellt einen neuen Animus mit der angegebenen Anzahl an Frames. Ein benutzerdefinierter Pinsel muss zuvor erstellt worden sein.

Sub Dog_DeleteFrame(Frame so lang) 

    Löscht den angegebenen Frame

Sub Dog_FreeAnim() 

    Gibt die aktuelle Animation und ihre Ressourcen frei.

Funktion Dog_Get_InternalBrushID() As Long

    Gibt die numerische ID des aktuellen internen Pinsels zurück.

Funktion Dog_GetABuffer() 

    Ruft eine Kopie des Alphakanals in einer Variante ab

Funktion Dog_GetAlphabits() als Byte 

    Gibt einen Wert zurück, der den Aktivierungszustand des Alphakanals angibt.

Sub Dog_GetAlphaBounds(x1 = lang, y1 = lang, x2 = lang, y2 = lang)

    Gibt die Begrenzungen des aktuellen Alpha 'selection' in x1,y1,x2,y2 zurück, die vom Benutzer lange angegeben werden sollen.

Funktion Dog_GetAltitude() als Single 

    Gibt die Höhe eines Tablettenstifts zurück.

Funktion Dog_GetAnimbrush_A()

    Gibt den Alphakanal eines Animesters zurück.

Funktion Dog_GetAnimbrush_B() 

    Gibt den Weichzeichenkanal eines Animbrush zurück.

Funktion Dog_GetAnimbrush_G()

    Gibt den grünen Kanal eines Animustieres zurück.

Funktion Dog_GetAnimbrush_R()

    Gibt den roten Kanal eines Animustieres zurück.

Funktion Dog_GetAnimbrush_Totalframes() Solange

    Ruft die Gesamtzahl der Frames in einem Anibrush ab.

Funktion Dog_GetAzimuth() Als Einzelperson

    Gibt den Pens-Azimut zurück.

Funktion Dog_GetB(X als Ganzzahl, Y als Ganzzahl) als Long

    gibt das blaue Attribut des angegebenen Pixels zurück.

Funktion Dog_GetPuffer() 

    Ruft eine Kopie des grünen Hauptpuffers in einer Variante ab

Funktion Dog_GetBFrame(Frame so lang)

    Gibt den blauen Kanal eines Frames aus der Animation zurück

Funktion Dog_GetBrushABuffer() 

    Ruft eine Kopie des aktuellen benutzerdefinierten Pinselalphapuffers ab.

Funktion Dog_GetBrushPuffer()

    Ruft eine Kopie des funktionierenden benutzerdefinierten blauen Pinselpuffers ab

Funktion Dog_GetBrushGBuffer() 

    Ruft eine Kopie des funktionierenden benutzerdefinierten grünen Pinselpuffers ab.

Funktion Dog_GetBrushHeight() als Ganzzahl

    Ruft die Höhe des aktuell ausgeführten benutzerdefinierten Pinsels in Pixel ab.

Funktion Dog_GetBrushMode() als Zeichenfolge

    Gibt den Malmodus des internen Pinsels zurück. Nicht zu verwechseln mit dem Füllmodus der Füllwerkzeuge. (Siehe Dog_GetPaintMode)

Funktion Dog_GetBrushOpacity() As Long

    Gibt die Deckkraft des internen Pinsels zurück

Funktion Dog_GetBrushRBuffer() 

    Ruft eine Kopie des funktionierenden benutzerdefinierten Puffers für Pinselrot ab.

Funktion Dog_GetBrushSettings() als Zeichenfolge

    Gibt den Dateinamen einer Datei zurück, die eine BrushSettings-Struktur enthält, die alle aktuellen Einstellungen aus dem Bedienfeld für die Pinseleinstellungen enthält. (ohne Pinselart)

Funktion Dog_GetBrushSize() As Long

    Gibt die Größe des internen Pinsels zurück

Funktion Dog_GetBrushSteps() As Long

    Gibt die Schritte des internen Pinsels zurück

Funktion Dog_GetBrushType() As Long

    Ruft den aktuellen Pinseltyp ab: 0=aa Pinsel, 1=Interner Pinsel, 2=Benutzerdefinierter Pinsel.

Funktion Dog_GetBrushWidth() als Ganzzahl 

    Ruft die Breite des aktuell ausgeführten benutzerdefinierten Pinsels in Pixel ab.

Funktion Dog_GetBump()

    Ruft eine Kopie der aktuellen Papiertextur (Bump) in einem Array ab

Funktion Dog_GetCurrentFrame() As Long

    Gibt die aktuelle Bildnummer in der Animation zurück (Bildnummern beginnen bei 0)

Funktion Dog_GetFillMode() As Long

    Ruft den aktuellen Füllmodus ab, der von Füllwerkzeugen verwendet wird.

Sub Dog_GetFrame()

    Bewirkt, dass der aktuelle Frame der Animation in den RGB-Puffern gespeichert wird.

Funktion Dog_GetG(X als Ganzzahl, Y als Ganzzahl) als Long

    gibt das grüne Attribut des angegebenen Pixels zurück.

Funktion Dog_GetGBuffer()

    Ruft eine Kopie des grünen Hauptpuffers in einer Variante ab

Funktion Dog_GetGFrame(Frame so lang)

    Gibt den grünen Kanal eines Frames aus der Animation zurück

Funktion Dog_GetGradient(Index As Integer)

    Erstellt eine Kopie des Farbverlaufs Es gibt insgesamt 8 Indizes. Verwenden Sie Dog_GetGradientIndex, um den aktuell vom Benutzer ausgewählten Index abzurufen.

Funktion Dog_GetGradientIndex() als Ganzzahl

    Gibt den Index des aktuell ausgewählten Farbverlaufs zurück.

Funktion Dog_GetGridState() As Boolean

    Gibt den Ein/Aus-Zustand des Gitters aus

Funktion Dog_GetGridX() As Long

    Gibt die x-Größe des Rasters zurück

Funktion Dog_GetGridY() As Long

    Ruft die y-Größe des Rasters ab

Funktion Dog_GetMediaPreview()

    Gibt ein Bild zurück, wie das aktuelle Medium bei der Verwendung aussehen könnte.

Funktion Dog_GetPaper()

    Gibt die aktuell verwendete Papiertextur zurück

Funktion Dog_GetPaperHeight() As Long

    Gibt die Höhe der aktuellen Papiertextur zurück

Funktion Dog_GetPaperWidth() As Long

    Gibt die Breite des aktuellen Papiers aus.

Funktion Dog_GetPitch() als Single

    Gibt den Zeichenabstand zurück

Funktion Dog_GetPressure() als Single

    Gibt den aktuellen Tablettendruck als Wert zwischen 0 und 1 aus.

Funktion Dog_GetPrimaryColor() As Long

    Ruft die primäre Stiftfarbe ab, die zum Zeichnen mit der linken Maustaste verwendet wird.

Funktion Dog_GetR(X als Ganzzahl, Y als Ganzzahl) als Long

    Gibt das rote Attribut des angegebenen Pixels zurück.

Funktion Dog_GetRBuffer() 

    Ruft eine Kopie des roten Hauptpuffers in einer Variante ab

Funktion Dog_GetRFrame(Frame so lang)

Funktion Dog_GetRGB(X als Ganzzahl, Y als Ganzzahl) als Long

    Gibt die RGB-Attribute des angegebenen Pixels im Langwortformat zurück.

Funktion Dog_GetRoll() als Single

    Gibt die Rolle der Stifte zurück

Funktion Dog_GetSecondaryColor() As Long

    Ruft die zweite Stiftfarbe ab, die zum Zeichnen mit der rechten Maustaste verwendet wird.

Funktion Dog_GetSwapPuffer()

    Gibt den blauen Swap-Puffer in einer Variante aus

Funktion Dog_GetSwapGBuffer()

    Gibt den grünen Swap-Puffer in einer Variante aus

Funktion Dog_GetSwapRBuffer()

    Gibt den Swap-Roten Puffer in einer Variante aus

Funktion Dog_GetTempDir() als Zeichenfolge

    Ruft das Verzeichnis zum Speichern temporärer Dateien ab

Funktion Dog_GetTotalFrames() As Long

    Gibt die Gesamtzahl der Frames in einer Animation zurück. (Gibt die tatsächliche Anzahl der Frames zurück, beginnt nicht bei 0)

Funktion Dog_GetTwist() als Single

    Gibt die Drehung der Stifte zurück

Funktion Dog_GetWells()

    Ruft ein Array in einer Variante ab, die jeden Well-Eintrag enthält.

Funktion Dog_GetYaw() als Single

    Gibt Yaw aus

Sub Dog_GotoFrame(Frame so lang)

    Wechselt zum angegebenen Frame

Sub Dog_GotoFrameAdv(Frame so lang, Flags so lang)

    Wechselt zum angegebenen Frame mit Optionen...

Sub Dog_InitMarquee() 

    Initialisiert den Marquis mit dem Alphakanal

Sub Dog_InsertFrame(Frame so lang)

    Fügt einen neuen Rahmen am angegebenen Rahmen ein.

Funktion Dog_IsTabletActive() As Boolean

    Gibt TRUE zurück, wenn das Tablet aktiv ist

Sub dog_load_IM(Dateiname als Zeichenfolge)

    Lädt einen neuen Puffer über den externen IM-Loader (Image Magic)

Sub Dog_Lock()

    Sperrt die Puffer, um zu verhindern, dass auf sie zugegriffen wird.

Sub Dog_Lock()

    Sperrt den Puffer, um zu verhindern, dass Benutzer Änderungen vornehmen, während ein Plug-in darauf zugreift. Mit Dog_Unlock koppeln

Sub Dog_MessageBox(Nachricht)

    Zeigt die bereitgestellte Nachricht für den Benutzer an

Sub Dog_NewBrushFilename(Pfad als Zeichenfolge)

Sub Dog_NewBuffer(width als Ganzzahl, height als Ganzzahl)

    Erstellt einen neuen Dogwaffle-Puffer (löscht derzeit den alten)

Sub Dog_NewFilename(Pfad als Zeichenfolge)

    Ändert den internen Pfadnamen, den dogwaffle beim Speichern eines Puffers verwendet

Sub Dog_NewPaper(Dateiname als Zeichenfolge)

    Legt eine neue Papiertextur fest. Unterstützt BMP und JPG

Sub Dog_PasteBrush()

Sub Dog_PlayAnimation()

    Spielt die aktuelle Animation ab.

Funktion Dog_QuestionBox(message) als Ganzzahl

    Fordert den Benutzer mit einem Anforderer für OK/Abbrechen auf. Ergebnis ist 1 für OK und 2 für Abbrechen.

Sub dog_refresh()

    Aktualisiert die Anzeige, nachdem Sie Änderungen vorgenommen haben.

Sub Dog_Refresh_BrushDisplays()

    Aktualisiert verschiedene Miniaturansichten in der Dogwaffle, die den aktuellen benutzerdefinierten Pinsel anzeigen. Beispielsweise der Pinseltaster, das aktuelle Pinselsymbol usw.

Sub Dog_RenameBuffer(Name als Zeichenfolge)

    Ändert den Namen des in der Titelleiste des Fensters angezeigten Puffers.

Sub Dog_ReplaceInternalBrush(Dateiname als Zeichenfolge, Index als Länge)

    Ersetzt interne Pinselbilder

Funktion Dog_RequestFile_Open(Titel als Zeichenfolge, Dateiname als Zeichenfolge, Muster als Zeichenfolge) als Zeichenfolge

    Zeigt einen Anforderer für Öffnen der Datei an. Ergebnis ist ein Dateiname oder ""

Funktion Dog_RequestFile_Save(Titel als Zeichenfolge, Dateiname als Zeichenfolge, Muster als Zeichenfolge) als Zeichenfolge

    Zeigt einen Anforderer für das Speichern von Dateien an. Ergebnis ist ein Dateiname oder ""

Sub Dog_RestorePointer()

    Setzt den Mauszeiger auf normal

Sub Dog_SaveUndo() 

    Speichert eine Rückgängigmachung

Sub Dog_SeAnimtBrush_A(abuf) 'yes, mit dem Tippfehler SetAnimBrush

    Setzt den Alphakanal eines Animbrush

Sub Dog_SeAnimtBrush_B(bbuf)

    Setzt den blauen Kanal eines Animbrush 

Sub Dog_SeAnimtBrush_G(Gbuff)

    Setzt den grünen Kanal eines Anibrushs.

Sub Dog_SeAnimtBrush_R(Rbuff)

    Setzt den roten Kanal eines Anibrushs.

Sub Dog_SendFormObject(NewObject als Objekt, showmode als Ganzzahl)

    Zeigt eine Kopie eines Formulars in der Anwendung an.

Sub Dog_SetABuffer(abuf)

    Legt den Alphapuffer mit dem angegebenen Array fest.

Sub Dog_SetPuffer(bbuf)

    Legt den blauen Puffer mit dem angegebenen Array fest.

Sub Dog_SetBrushABuffer(abuf)

    Legt den Alphapuffer des aktuellen benutzerdefinierten Pinsels mit dem bereitgestellten Array fest. Pinsel sollte zuerst initialisiert werden.

Sub Dog_SetBrushPuffer(bbuf)

    Legt den blauen Puffer mit dem angegebenen Array fest.

Sub Dog_SetBrushGBuffer(gbuf)

    Legt den grünen Puffer des aktuellen benutzerdefinierten Pinsels mit dem bereitgestellten Array fest. Pinsel sollte zuerst initialisiert werden.

Sub Dog_SetBrushMode(mode As String)

    Legt den Farbmodus des internen Pinsels fest. Nicht zu verwechseln mit dem Füllmodus der Füllwerkzeuge. (Siehe Dog_SetPaintMode)

Sub Dog_SetBrushOpacity(Deckkraft wie lang)

    Legt den Deckkraftregler im Werkzeugfenster fest.

Sub Dog_SetBrushRBuffer(rbuf)

    Legt den roten Puffer des aktuellen benutzerdefinierten Pinsels mit dem bereitgestellten Array fest. Pinsel sollte zuerst initialisiert werden.

Sub Dog_SetBrushSettings(SettingsFile als String)

    Liest eine BrushSettings-Datei, die alle Einstellungen für den Bereich für die Pinseleinstellungen enthält. (ohne Pinselart)

Sub Dog_SetBrushSize(Größe wie lang)

    Legt den Schieberegler für die Pinselgröße im Werkzeugfenster fest.

Sub Dog_SetBrushSteps(Schritte wie lang)

Funktion Dog_SetBrushType(BrushType = Long) As Long

    Legt den Pinseltyp fest. 0=a Pinsel, 1-interner Pinsel, 2 = benutzerdefinierter Pinsel.

Sub Dog_SetFillMode(mode As Long)

    Legt den von den Füllwerkzeugen verwendeten Malmodus fest

Sub Dog_SetGBuffer(gbuf) 

    Legt den grünen Puffer mit dem angegebenen Array fest.

Sub Dog_SetGradient(NewGradient, Index als Integer)

    kopiert ein Array in den Indexgradient.

Sub Dog_SetGrid(Aktiv als Boolesch, X als Long, Y als Long)

    Legt die Größe des Rasters und den Ein/Aus-Zustand fest.

Sub Dog_SetInternalBrush(Index als Long) 

    Wählt ein neues internes Pinselbild nach Index aus.

Funktion Dog_SetMousePointer(PointerNumer As Integer) As Integer

    Legt den Mauszeiger auf eines von mehreren vordefinierten Bildern fest, z. B. auf die Sanduhr. Gibt die Nummer des aktuellen Zeigers zurück.

Sub Dog_SetPaper(Puffer, pwidth = lang, pheight = lang)

    erstellt eine neue Papiertextur und legt deren Bild fest.

Sub Dog_SetPrimaryColor(r als Byte, g als Byte, b als Byte)

    Legt die primäre Stiftfarbe für das Zeichnen mit der linken Maustaste fest.

Sub Dog_SetProgress(Einzelvorgang läuft)

    Legt einen Wert für die sichtbare Fortschrittsleiste auf der Plug-in-Oberfläche fest. Wert zwischen 0 und 100 liegt.

Sub Dog_SetRbuffer(rbuf)

    Legt den roten Puffer mit dem angegebenen Array fest.

Sub Dog_SetRGB(X als Ganzzahl, Y als Ganzzahl, r als Byte, g als Byte, b als Byte)

    Setzt das angegebene Pixel in den Hauptpuffern auf den Wert r,g,b.

Sub Dog_SetSecondaryColor(r als Byte, g als Byte, b als Byte)

    Legt die sekundäre Stiftfarbe fest, die für das Zeichnen mit der rechten Maustaste verwendet wird.

Sub Dog_SetSwapPuffer(jbbuf)

   Legt den blauen Puffer für das Auslagerungsbild mit dem angegebenen Array fest.

Sub Dog_SetSwapGBuffer(jgbuf)

   Legt den grünen Puffer für das Auslagerungsbild mit dem angegebenen Array fest.

Sub Dog_SetSwapRBuffer(jrbuf)

   Legt den roten Puffer für das Auslagerungsbild mit dem angegebenen Array fest.

Sub Dog_SetWells(NewWells)

    setzt dogwaffles well Farben mit einer Variante Array

Sub Dog_ShowScrub(CurrentFrame = Long, TotalFrames = Long)

    Zeigt die Animationssteuerung an.

Sub Dog_StopAnimation()

    Stoppt die Wiedergabe einer Animation.

Sub Dog_StoreFrame()

    Bewirkt, dass die RGB-Puffer im aktuellen Frame der Animation gespeichert werden.

Sub dog_unlock()

    Entsperrt die Puffer für die Verwendung durch den Benutzer (wenn kein anderes Plug-in noch eine Sperre enthält)

Sub Dog_UnlockHard()

    Entsperrt den Puffer auch dann, wenn ein anderes Plugin eine Sperre hält.

Funktion Dog_ValueBox(title As String, min As Integer, max As Integer) As Integer

    Fordert den Benutzer zur Eingabe eines Werts innerhalb eines bestimmten Bereichs auf. Ergebnis ist der Wert oder -1, wenn abgebrochen.

Funktion Dog_ValueBox2(title As String, caption As String, min As Long, max As Long, default As Long) As Long

    Ersatz für den Testwerber. Ermöglicht jetzt einen Standardwert und einen Fenstertitel.

Funktion Dog_WallpaperFilename() als String

    Gibt den Dateinamen des aktuellen Hintergrundbilds zurück, das im Hintergrund (MDI)-Fenster angezeigt wird.

 

 


 

 

Beispiel-Plug-in

 

Hier ist ein sehr einfaches Beispiel für ein Plugin. Im Folgenden finden Sie das vollständige Programm. Fügen Sie ihn einfach in ein leeres Projekt ohne Formulare und ein Modul ein. Das ist alles.

 

Dieses Beispiel ist für Visual Basic 5 und 6. Unten finden Sie ein Beispiel für VB.net.

 

Sub-Main

'*** BEISPIEL FÜR EINEN NEGATIVEN ***

Um dieses Beispiel zu verwenden, erstellen Sie ein visuelles Basisprojekt ohne Formulare

und ein leeres Modul, und fügen Sie diesen Code ein. Das war's.

'dogwaffle sollte ausgeführt werden, wenn dieser Code ausgeführt wird.

 

Dim x As Integer, y As Integer

Dim r als Byte, g als Byte, b als Byte

'Hauptpuffer zuweisen'

Dim MainRBuffer() As Byte

Dim MainGBuffer() As Byte

Dim MainBuffer() As Byte

 

'Erstellen eines Dogwaffle-Objekts

Dim Dogwaffle als Objekt

Set Dogwaffle = CreateObject("Dogwaffle.Dogwaffle_Class")

 

'die Breite und Höhe des Puffers abrufen

th = Dogwaffle.Dog_BufferHeight;

tw = Dogwaffle.Dog_BufferWidth;

 

Die Puffer holen

MainRBuffer() = Dogwaffle.Dog_GetRBuffer

MainGBuffer() = Dogwaffle.Dog_GetGBuffer

MainPuffer() = Dogwaffle.Dog_GetPuffer

 

die Puffer verarbeiten.

"in diesem Fall eine negative Auswirkung.

  Für y = 0 bis th-1

   Für x = 0 bis tw-1

      r = MainRBuffer(x, y)

      g = MainGBuffer(x, y)

      b = MainBuffer(x, y)

      MainRBuffer(x, y) = 255-r

      MainGBuffer(x, y) = 255-g

      MainBuffer(x, y) = 255-b

    Weiter

  Weiter

 

Ich schicke die Puffer zurück zur Hundewaffel.

Dogwaffle.Dog_SetRbuffer MainRBuffer()

Dogwaffle.Dog_SetGbuffer MainGBuffer()

Dogwaffle.Dog_SetBuffer MainBuffer()

 

'und Bildschirm aktualisieren

dogwaffle.dog_refresh

 

End Sub

 

Diese Plugin-Beispiele können frei modifiziert und verteilt werden. Dafür ist es da.

 

VB.net-Beispiel

 

'Der Hauptunterschied besteht in der Art und Weise, wie Arrays deklariert werden. Sie waren früher schwach (untere Grenze, obere Grenze)

'Jetzt ist die Untergrenze immer 0, und der Parameter ist die Anzahl der Array-Elemente und nicht die Obergrenze.

'auch Ganzzahlen sind jetzt 32-Bit und Longs sind jetzt 64-Bit, sodass wir Ganzzahlen anstelle von Longs verwenden.

 

Sub Main()

'*** BEISPIEL FÜR EINEN NEGATIVEN ***

Um dieses Beispiel zu verwenden, erstellen Sie ein visuelles Basisprojekt ohne

forms

und ein leeres Modul, und fügen Sie diesen Code ein.

'Starteinstiegspunkt im Projekt auf Sub Main setzen

Eigenschaften

Das war's.

'dogwaffle sollte ausgeführt werden, wenn dieser Code ausgeführt wird.

 

Dim x As Integer, y As Integer

Dim r als Byte, g als Byte, b als Byte

Dim tw As Long, th As Long

 

'Erstellen eines Dogwaffle-Objekts

Dim Dogwaffle als Objekt

Dogwaffle = CreateObject("Dogwaffle.Dogwaffle_Class");

 

'die Breite und Höhe des Puffers abrufen

th = Dogwaffle.Dog_BufferHeight;

tw = Dogwaffle.Dog_BufferWidth;

 

'Hauptpuffer zuweisen'

Dim MainRBuffer(tw, th) As Byte

Dim MainGBuffer(tw, th) As Byte

Dim MainBuffer(tw, th) As Byte

 

Die Puffer holen

MainRBuffer = Dogwaffle.Dog_GetRBuffer;

MainGBuffer = Dogwaffle.Dog_GetGBuffer;

MainPuffer = Dogwaffle.Dog_GetPuffer;

 

die Puffer verarbeiten.

"in diesem Fall eine negative Auswirkung.

Für y = 0 bis th - 1

Für x = 0 bis tw - 1

r = MainRBuffer(x, y)

g = MainGBuffer(x, y)

b = MainBuffer(x, y)

MainRBuffer(x, y) = 255 - r

MainGBuffer(x, y) = 255 - g

MainBuffer(x, y) = 255 - b

Weiter

Weiter

 

Ich schicke die Puffer zurück zur Hundewaffel.

Dogwaffle.Dog_SetRbuffer(MainRBuffer)

Dogwaffle.Dog_SetGbuffer(MainGBuffer)

Dogwaffle.Dog_SetBbuffer(MainPuffer)

 

'und Bildschirm aktualisieren

dogWaffle.dog_refresh()

 

End Sub

 


 

 

Informationen und Code auf dieser Seite werden ohne Gewähr jeglicher Art bereitgestellt. Verwenden

auf eigenes Risiko.