Formaat wijzigen van een afbeelding bij het opladen van een signaletiek

0000002453     -      11-09-2023

De hieronder beschreven programmering is verouderd. Sinds versie 11.0 van Mercator is het mogelijk om de parameters voor het wijzigen van het formaat van een afbeelding in de scherminstellingen in te stellen.


Met de beschrijving van deze programmatie wordt aangetoond hoe het formaat van een afbeelding bij het opladen van een signaletiek kan aangepast worden. Het voorbeeld is gemaakt voor de signaletiek Artikels en een veld van de tabel STOCK, S_IMAGE genaamd, van het type image of varbinary (MAX). Het event PictureSelected van de MovablePictureBox wordt uitgevoerd. Dit event zorgt er voor dat de afbeelding wordt geladen, hetzij door het menu, hetzij via drag & drop.

De waarde "1CD6B224F1" in de code van deze customiser SigStock hieronder moet door de ID van de gebruikte PictureBox worden vervangen.

Zoom
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using MercatorApi;
using MercatorUi;
using System.Windows.Forms;
using System.Drawing;

namespace SigStock
{
    public class Customizer : MercatorUi.ICustomizers.IFormLoadCustomizer, MercatorUi.ICustomizers.IFormClosedCustomizer
    {

        private Size desiredSize = new Size(80, 80);

        public void FormLoadCustomize(Form form)
        {
            MercatorUi.Forms.Sig.SigForm sigForm = (MercatorUi.Forms.Sig.SigForm)form;
            MercatorUi.MovableControls.MovablePictureBox pictureBox = (MercatorUi.MovableControls.MovablePictureBox)sigForm.MovableControls["1CD6B224F1"];
            pictureBox.PictureSelected += pictureBox_PictureSelected;
        }

        public void FormClosedCustomize(Form form)
        {
            MercatorUi.Forms.Sig.SigForm sigForm = (MercatorUi.Forms.Sig.SigForm)form;
            MercatorUi.MovableControls.MovablePictureBox pictureBox = (MercatorUi.MovableControls.MovablePictureBox)sigForm.MovableControls["1CD6B224F1"];
            pictureBox.PictureSelected -= pictureBox_PictureSelected;
        }

        private void pictureBox_PictureSelected(object sender, EventArgs e)
        {
            MercatorUi.MovableControls.MovablePictureBox pictureBox = (MercatorUi.MovableControls.MovablePictureBox)sender;
            if ((pictureBox.BinaryValue != null) && (pictureBox.BinaryValue is byte[]) && (((byte[])pictureBox.BinaryValue).Length > 0))
            {
                 using (Image img = Api.BytesToImage((byte[])pictureBox.BinaryValue))
                {
                       if ((img.Width == desiredSize.Width) && (img.Height == desiredSize.Height))
                           return; // de afbeelding is reeds in de juiste afmeting
                       using (Image img2 = _Divers.ResizeImage(img, desiredSize))
                           pictureBox.BinaryValue = Api.ImageToBytes(img2);
                       Dialogs.Stop(string.Format("Het formaat van de afbeelding is gewijzigd: {0}x{1} !", desiredSize.Width, desiredSize.Height));
                }
            }
        }

    }
}