Page 1 sur 1

problème de code pour créer de l'ombre

Publié : 07 Mars 2023 18:48
par franceschi julien
Salut à tous,

J'ai récupéré le bout de code suivant sur Internet pour créer un effet d'ombre avec le code suivant (c'est du C#):
Voici l'image:
Image

et ici le code ci-dessus:

Code : Tout sélectionner

using System.Drawing;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
//using Microsoft.Unity.VisualStudio.Editor;

public class dragImage : MonoBehaviour, IDropHandler
{

    Image srcImage = Image.FromFile("source.png");
    Bitmap shadowImage = new Bitmap(srcImage.Width, srcImage.Height);

// Créer un objet Graphics pour dessiner l'ombre
using (Graphics g = Graphics.FromImage(shadowImage))
{
    // Définir les paramètres pour le pinceau de l'ombre
    Color shadowColor = Color.FromArgb(128, 0, 0, 0); // Alpha = 128 pour la transparence de l'ombre
    int shadowSize = 10; // Taille de l'ombre en pixels

    // Dessiner l'ombre en plusieurs passes pour créer un effet de flou
    for (int i = 0; i < shadowSize; i++)
    {
        // Définir la transparence pour cette passe
        int alpha = (int)(shadowColor.A / (i + 1f));
        Color alphaColor = Color.FromArgb(alpha, shadowColor.R, shadowColor.G, shadowColor.B);

        // Définir le pinceau pour cette passe
        Brush brush = new SolidBrush(alphaColor);

        // Dessiner un rectangle plus grand que l'image source pour créer l'ombre
        g.FillRectangle(brush, -i, -i, srcImage.Width + shadowSize, srcImage.Height + shadowSize);
    }

    // Dessiner l'image source sur l'ombre avec un décalage
    g.DrawImage(srcImage, new Point(shadowSize, shadowSize));

    // Enregistrer l'image avec l'ombre
    shadowImage.Save("image_avec_ombre.png");
}

}
    
Le problème c'est que le débugger souligne énormement d'erreurs, j'ai pourtant tout essayé (avec le using).
Ca serait bien si vous pouvez m'aider.

Merci pour votre aide,

A+

Re: problème de code pour créer de l'ombre

Publié : 08 Mars 2023 09:30
par boubouk50
Déjà, peux-tu nous dire où tu as récupéré ce code ?
Ensuite, les erreurs sont explicites pour les régler :
IDropHandler est une interface, ta classe doit donc contenir les membres de celle-ci : tu dois définir la fonction OnDrop () (voir documentation)
La classe Image ne contient pas de fonction FromFile, parce que tu utilises dans ce cas, la classe Image du namespace UnityEngine.UI au lieu de celle de System.Drawing.
Ce qui me fait dire que ce code est bien du C# mais pas dédié à Unity ou bien tu l'as trop bidouillé pour qu'il fonctionne.