Schatten-Optionen in VBA
#1
[Bild: DemoSchatten.png]

So sieht eine typische Aufgabenstellung für mich aus: Kunde wünscht mit Schatten unterlegte Namen auf Schmuckpapier unterschiedlicher Ausführung (wie etwa Farbe) und in unterschiedlichen Fonts.
Je nach Papier und Font wirkt sich ein unterlegter Schatten optisch ein wenig anders aus. Wenn ich etwa die Schattenstärke ändern will, muss ich in X5 jede einzelne Schattengruppe (von 24 auf einem Blatt in diesem Beispiel) einzeln auswählen und z.B. die Schattenfarbe von 80 % Schwarz in 70 % ändern, weil ich es bisher nicht schaffte, Schattengruppen so gemeinsam zu gruppieren, dass ich eine solche Änderung auf einen Schlag erledigen konnte.
Auch die rot eingekreisten links oben sichtbaren Parameter müssen gelegentlich geändert werden.

Natürlich ist so eine Änderung schnell erledigt, in dem man ein Beispiel entsprechend ändert und die anderen an die gewünschten Positionen kopiert. Aber manchmal pressiert es und man wünscht sich ein Makro oder wenigstens das Wissen, wie man eine derartige Fragestellung mit VBA löst.

Über Denkanstöße freut sich
Oswald
Zitieren
#2
Hallo, schau mal da, vielleicht.....
http://macromonster.com/index.php?mod=descr&id_desc=14&

http://www.gdgmacros.com/details.php?tog...75#anchor1

http://macros.cdrpro.ru/dropshadow
Zitieren
#3
Hallo norre,

ich habe noch nicht ganz kapiert, ob das Makro im ersten (und dritten) Link die Serienproduktion für mich erleichtert. Das kriege ich sicher noch heraus.
Was ich aber mindestens genauso toll finde: Man kann Schatten optimieren - deutlich besser als Corel rendert; das wußte ich nicht. Dabei steht und fällt die Optik von schattenunterlegten feinen Formen (wie etwa Schrift) mit solchen Feinheiten. Das Rendern der Schatten von Corel hat sich für mich von der Version X3 zur X5 verschlechtert.

Der Preis scheint mir angemessen, wenn man solche Schatten oft nutzt.

Vielen Dank
Oswald
Zitieren
#4
Hallo Oswald,
gern benutze ich die Funktion "Effekte kopieren" → hinterlegter Schatten aus, was auch auch bei bei mehreren ausgewählten Objekte oder bei Gruppen funktioniert.

Einfach und schnell sind auch "eigene Voreinstellungen" zugefügt und genau so schnell wieder entfernt.

[Bild: 18504375lm.png]

Freundliche Grüße vom Unkraut

Betriebssystem / Grafik-Software: Win 7
Zitieren
#5
Effekte kopieren - das ist prima, damit kann ich schon ein wenig beschleunigen.

Manchmal muss ich einen Anfall von Scham über solche eklatanten Lücken überstehen. Aber ich muss das unterdrücken. Breite geht halt immer zulasten der Tiefe. Glücklicherweise gibt es euch!

Dankbar
Oswald
Zitieren
#6
Hallo Oswald,

OsCor schrieb:...man wünscht sich ein Makro oder wenigstens das Wissen, wie man eine derartige Fragestellung mit VBA löst.

Du hast als erfahrener Delphi-Programmierer gute Voraussetzungen Dir VBA anzueignen.
Schlüsselwörter und Syntax sind ja sehr ähnlich!
Beispiel:
Code:
String-Variablen, mit Delphi deklarieren:
var Schrift1, Schrift2: string;

String-Variablen, mit VBA deklarieren:
Dim Schrift1 As String, Schrift2 As String
______________________________________

Wertzuweisung mit dem With Statement in Delphi:

With schatten do
begin
   Opacity := 55;
   Feather := 23.5;
   OffsetX := 1.5;
   OffsetY := 1.5;
end;

Wertzuweisung mit dem With Statement in VBA:

With schatten
    .Opacity = 55
    .Feather = 20
    .OffsetX = 1.5
    .OffsetY = -2
End With
______________________________________

Schleife ohne Laufvariable mit Delphi:

for seite in AD.Pages do
begin
   // mach was
end;

Schleife ohne Laufvariable mit VBA:

For Each seite In AD.Pages
    ' mach was
Next

Du musst natürlich das Corel-Objektmodell kennenlernen aber Die Grundlagen wie Variablen, Objektorientierung, Kontrollstrukturen usw. beherrscht Du ja schon.

Beispiel 1) dem ausgewälten Objekt einen Schatten zuweisen:

Code:
Sub schatten1()
    'Objekte Deklarieren:
    Dim s As Shape
    Dim e As Effect
    Dim schatten As EffectDropShadow
    
    'Objektverweise herstellen
    Set s = ActiveShape
    Set e = s.CreateDropShadow
    Set schatten = e.DropShadow
    
    'Die Maßeinheit bestimmen (für den Offset):
    ActiveDocument.Unit = cdrMillimeter

    'Werte setzen
    With schatten
        .Opacity = 55 'roter Kreis Nr. 2 in Deinem Screenshot
        .Feather = 20 'roter Kreis Nr. 3 in Deinem Screenshot
        'nicht nummerierter roter Kreis in Deinem Screenshot:
        .OffsetX = 1.5
        .OffsetY = -2
    End With
End Sub

Beispiel 2) jedem (nicht gruppierten) Text, mit der Schrift "Book Antiqua", auf allen Seiten des Dokuments den Schatten des ausgewählen Objekts zuweisen:
Code:
Sub SchriftSchatten()
    Dim Schrift1 As String, Schrift2 As String
    Dim AD As Document
    Dim seite As Page
    Dim s As Shape, s1 As Shape
    Dim e As Effect, e2 As Effect
    Dim schatten As EffectDropShadow
    Dim schatten2 As EffectDropShadow
    
    Set s1 = ActiveSelectionRange.Shapes(1)
    For Each e In s1.Effects
        If e.Type = cdrDropShadow Then
            Set schatten = e.DropShadow
        End If
    Next
    
    Schrift = "Book Antiqua"
    
    Set AD = ActiveDocument
    For Each seite In AD.Pages
        For Each s In seite.Shapes.All
            If s.Type = cdrTextShape Then
                If s.Text.Story.Font = Schrift Then
                    If s.StaticID <> s1.StaticID Then
                        Set e2 = s.CreateDropShadow
                        Set schatten2 = e2.DropShadow
                        With schatten2
                            .Opacity = schatten.Opacity
                            .Feather = schatten.Feather
                            .OffsetX = schatten.OffsetX
                            .OffsetY = schatten.OffsetY
                        End With
                    End If
                End If
            End If
        Next
    Next
End Sub

Das Makro ist ziemlich nutzlos, es soll nur als Beispiel und Anregung dienen.

Vielleicht hilft Dir das beim Einstieg in VBA.

Bei Deiner Aufgabe ist Unkrauts Tip, oder aber „Effekt klonen“ wahrscheinlich rationeller als ein Makro zu basteln.

Gruß

Koter
Zitieren
#7
Hallo Koter,

vielen Dank für deine Ermutigung. Ich habe mir vor längerer Zeit für X5 den Macro Programming Guide besorgt und zum größten Teil auch gelesen. Auf Grund meines breiten Tätigkeitsfeldes habe ich aber noch keine Zeit gefunden, mich richtig hinein zu knieen.
Dass VB(A) für mich nicht allzu schwer sein dürfte, wurde mir klar, als ich vor ein paar Wochen Visual Basic 2010 Express für mich entdeckte und an Hand eines etwas komplexeren Bildbetrachters auch ausprobierte.
Um in ein solches System tiefer einzudringen, brauche ich immer einige Zeit; hilfreich sind für mich dabei gedruckte Manuals oder Lehrbücher. Damit setze ich mich abends mit einem Bier oder einem Glas Wein auf die Terrasse und denke mich hinein - offline quasi.

Unkrauts Hinweis hat mir aber tatsächlich schon deutlich weitergeholfen.

Gruß
Oswald
Zitieren
#8
Hallo Oswald,
jetzt weiß ich nicht mehr ob ich dir den Link schon mal geschickt habe, egal hier....
http://community.coreldraw.com/wikis/how...ssons.aspx
für mich zu hoch[Bild: e065.gif] , für dich vielleicht informativ [Bild: e055.gif]
Zitieren
#9
Hallo norre,

nein, den Link kannte ich noch nicht. Sieht gut aus!

Gruß
Oswald
Zitieren



Möglicherweise verwandte Themen...
Thema Verfasser Antworten Ansichten Letzter Beitrag
  Druckeinstellungen in den Optionen von CorelDraw OsCor 4 2.333 09.12.2021, 14:54
Letzter Beitrag: OsCor
Question Schatten hinzufügen HercONE 5 1.566 15.02.2020, 13:59
Letzter Beitrag: HercONE
  CDR X5 > Extras > Optionen Max 9 1.664 05.08.2016, 14:38
Letzter Beitrag: mvm
  Wie bekomme ich so einen Schatten hin? ohdumeineblume 7 1.631 24.06.2015, 23:31
Letzter Beitrag: miss_marple
  Hinterlegter Schatten mit Farbverlauf norre 0 1.167 23.01.2015, 02:21
Letzter Beitrag: norre
  Hinterlegten Schatten konstant halten nanotalker 3 1.441 22.01.2015, 13:01
Letzter Beitrag: nanotalker
  Objekt mit Schatten radieren canis 12 2.637 20.05.2014, 13:34
Letzter Beitrag: canis
  Extrusion und hinterlegter Schatten, X5, X7 OsCor 3 2.316 16.05.2014, 22:45
Letzter Beitrag: koter
  Linker u. rechter Schatten bei Corel Draw lightplace 6 1.822 12.09.2013, 18:04
Letzter Beitrag: lightplace
  Optionen verändern und speichern hansgeorg 3 1.001 06.02.2013, 15:22
Letzter Beitrag: hansgeorg