Programmiermodule
Eine Einführung in die einfache und flexible Plugin-Architektur von Project Dogwaffle.
Dieses Dokument umfasst die folgenden Themen:
Plugin-Beispiel (VB 5/6)
Referenz zu Plug-in-Schnittstellenfunktionen (Alphabetisch)
Andere Dokumente
Beispiele für Plug-in-Schnittstellenfunktionen Viele Beispiele für allgemeine Funktionen. (VB 5/6)
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. |
"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.
Der 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
Um ein neues Plug-in zu starten, öffnen Sie ein standardmäßiges exe-Projekt.
|
Erstellen Sie ein neues Modul, das Ihren Plugin-Code enthält. Bei einem Plugin mit einer Schnittstelle ist dies der Startcode.
|
Wenn Ihr Plug-in keine Schnittstelle erfordert, entfernen Sie einfach das Standardformular aus dem Projekt.
|
![]() 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

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.
"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. |
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.
'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.