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     -      18/02/2019

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 += new EventHandler(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 -= new EventHandler(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))
            {
                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
                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));
            }
        }

    }
}