Search code examples
c#signaturepadwacom

Wacom Signature SDK restyle buttons


I'm using a Wacom STU 530 signature tab with the Signature SDK v3.20.4., the documentation seems to only be furnished when buying the SDK, so I won't be able to give a link here, but you can find some code samples here.

My problem is about restyling the buttons showing on the signature pad, I can't find how. Some code :

/* We have this controller which was placed in a windows form
* It's that object that will mainly communicate with the Wacom tab
* It's already initialized, I'm showing this to just to show the type & name */
AxWizCtl WizCtl;

bool success = WizCtl.PadConnect()

if(isSuccess) {

    WizCtl.Font = new Font("Arial", 20, FontStyle.Bold);
    WizCtl.AddObject(ObjectType.ObjectButton, id, x, y, text, null);

    /* 
    * And now what? I can only change the font and dimensions.
    * How could I change things like the border or the color?
    * I don't even know how I can access the newly created object
    */

    WizCtl.Display();
}

And I know it must possible, this SDK has this method CaptureResult res = SigCtl.CtlCapture("who", "why"); (SigCtl being a AxSigCtl object) that can display a pre-defined form with colored buttons, but I want to build my own.

Wacom pad with built-in signature capture (The buttons here are blue-ish while the ones created with AddObject are white)

Also, unlike the font change, this doesn't work :

AxWizCtl WizCtl;

bool success = WizCtl.PadConnect()

if(isSuccess) {

    WizCtl.Font = new Font("Arial", 20, FontStyle.Bold);
    WizCtl.BorderColor = Color.DarkOrange;
    WizCtl.BackColor = Color.HotPink;
    WizCtl.BorderWidth = 3;

    WizCtl.AddObject(ObjectType.ObjectButton, id, x, y, text, null);  

    WizCtl.Display();
}

Solution

  • After contacting the Wacom Support I managed to get an answer :

    AxWizCtl WizCtl;
    
    bool success = WizCtl.PadConnect()
    
    if(isSuccess) {
    
        WizCtl.Font = new Font("Arial", 20, FontStyle.Bold);
        WizCtl.SetProperty("ObjectForegroundColor", ConvertColor(Color.DarkOrange)); //Affects text and border colors
        WizCtl.SetProperty("ObjectBackgroundColor", ConvertColor(Color.Pink)); //Affects backgroud color
    
        WizCtl.AddObject(ObjectType.ObjectButton, id, x, y, text, null);  
    
        WizCtl.Display();
    }
    
    //Needed as the color format is a string like this : "0,0.165,1"
    //The order being red, green and blue and the values between 0 and 1
    private string ConvertColor (Color color) {
        string r = ((float)(color.R / 255f)).ToString("0.000");
        string g = ((float)(color.G / 255f)).ToString("0.000");
        string b = ((float)(color.B / 255f)).ToString("0.000");
        return String.Format("{0},{1},{2}", r.Replace(',', '.'), g.Replace(',', '.'), b.Replace(',', '.'));
    }
    

    Just like the fonts, it affects all the subsequent created elements, so don't forget to reset them.