Vous consultez une page technique concernant le logiciel de gestion Mercator. Celle-ci contient des informations spécifiques destinées aux professionnels de Mercator. Souhaitez-vous être redirigés vers des informations plus générales ?


   Ne plus poser cette question

Redimensionner une image de signalétique lors de son chargement

0000002453     -      11/09/2023

La programmation décrite ci-dessous est obsolète. Depuis la version 11.0 de Mercator, il est possible de fixer les paramètres de redimensionnement dans le paramétrage d'écran.


La programmation décrite ici montre comment redimensionner une image lors de son chargement dans une fiche de signalétique. L'exemple est fait pour le signalétique des articles et un champ de la table STOCK, nommé S_IMAGE de type image ou varbinary'(MAX). Il exploite l'événement PictureSelected de la MovablePictureBox. Cet événement est levé que l'image soit chargée par le menu contextuel ou via drag & drop.

Le code de ce customizer SigStock est le suivant. Dans ce code, la valeur "1CD6B224F1" doit être remplacée par l'ID de la PictureBox utilisée.

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; // l'image est déjà à la bonne dimension
                       using (Image img2 = _Divers.ResizeImage(img, desiredSize))
                           pictureBox.BinaryValue = Api.ImageToBytes(img2);
                       Dialogs.Stop(string.Format("L'image a été redimensionnée : {0}x{1} !", desiredSize.Width, desiredSize.Height));
                 }
            }
        }

    }
}