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

Pour les scripts écrits en C#
Règles du forum
Merci de respecter la NOMENCLATURE suivante pour vos TITRES de messages :

Commencez par le niveau de vos scripts
DB = Débutant
MY = Moyen
CF = Confirmé

Puis le domaine d'application
-RS = Réseau
-AL = Algorithmie

Exemple :

[DB-RS] Mouvement perso multijoueur
franceschi julien
Messages : 27
Inscription : 14 Fév 2022 18:44

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

Message par franceschi julien » 07 Mars 2023 18:48

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+
Dernière édition par franceschi julien le 08 Mars 2023 17:27, édité 1 fois.

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6215
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

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

Message par boubouk50 » 08 Mars 2023 09:30

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.
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Répondre

Revenir vers « (C#) CSharp »