Accueil > > > DIFFUSED BITMAP - CRÉATION D'UNE IMAGE DIFFUSE.
DIFFUSED BITMAP - CRÉATION D'UNE IMAGE DIFFUSE.
Information sur la source
Description
Le projet permet de visualiser la création d'une image diffuse. La diffusion peut s'effectuer vers la droite, la gauche, le bas ou le haut et demande un léger temps de calcul.
Source
- #region GetDiffusedBitmap (création d'une image diffuse)
- /// <summary>
- /// Retourne une image diffuse.
- /// </summary>
- /// <param name="img">Image d'origine.</param>
- /// <param name="direction">Sens de la diffusion.</param>
- /// <returns>Image diffusée.</returns>
- public static Bitmap GetDiffusedBitmap(Image img, dbm_Direction direction)
- {
- float stepFactor = 0.01f;
- float alphaFactor = stepFactor;
- float alpha = 1.0f;
- int step = 0;
- if (direction == dbm_Direction.Right || direction == dbm_Direction.Left)
- step = (int)(img.Width*stepFactor);
- else
- step = (int)(img.Height*stepFactor);
-
- int x = 0;
- if (direction == dbm_Direction.Left)
- x = img.Width - step;
- else if (direction == dbm_Direction.Top)
- x = img.Height - step;
-
- ColorMatrix cm = new ColorMatrix();
- cm.Matrix33 = alpha;
-
- ImageAttributes ia = new ImageAttributes();
- ia.SetColorMatrix(
- cm,
- ColorMatrixFlag.Default,
- ColorAdjustType.Bitmap
- );
-
- Bitmap bmp = new Bitmap(img.Width, img.Height);
-
- using (Graphics g = Graphics.FromImage(bmp))
- {
- while (cm.Matrix33 >= 0.0f)
- {
- Rectangle rect = Rectangle.Empty;
- if (direction == dbm_Direction.Right || direction == dbm_Direction.Left)
- rect = new Rectangle(x, 0, step, img.Height);
- else
- rect = new Rectangle(0, x, img.Width, step);
- g.DrawImage(
- img,
- rect,
- rect.X,
- rect.Y,
- rect.Width,
- rect.Height,
- GraphicsUnit.Pixel,
- ia
- );
-
- if (direction == dbm_Direction.Right || direction == dbm_Direction.Bottom)
- x += step;
- else if (direction == dbm_Direction.Left || direction == dbm_Direction.Top)
- x -= step;
-
- alpha -= alphaFactor;
- cm.Matrix33 = alpha;
- ia.SetColorMatrix(
- cm,
- ColorMatrixFlag.Default,
- ColorAdjustType.Bitmap
- );
- }
- }
-
- return bmp;
- }
- #endregion
-
- #region dbm_Direction
- public enum dbm_Direction : short
- {
- /// <summary>
- /// Vers la droite.
- /// </summary>
- Right = 0,
- /// <summary>
- /// Vers la gauche.
- /// </summary>
- Left = 1,
- /// <summary>
- /// Vers le haut.
- /// </summary>
- Top = 2,
- /// <summary>
- /// Vers le bas.
- /// </summary>
- Bottom = 3
- }
- #endregion
#region GetDiffusedBitmap (création d'une image diffuse)
/// <summary>
/// Retourne une image diffuse.
/// </summary>
/// <param name="img">Image d'origine.</param>
/// <param name="direction">Sens de la diffusion.</param>
/// <returns>Image diffusée.</returns>
public static Bitmap GetDiffusedBitmap(Image img, dbm_Direction direction)
{
float stepFactor = 0.01f;
float alphaFactor = stepFactor;
float alpha = 1.0f;
int step = 0;
if (direction == dbm_Direction.Right || direction == dbm_Direction.Left)
step = (int)(img.Width*stepFactor);
else
step = (int)(img.Height*stepFactor);
int x = 0;
if (direction == dbm_Direction.Left)
x = img.Width - step;
else if (direction == dbm_Direction.Top)
x = img.Height - step;
ColorMatrix cm = new ColorMatrix();
cm.Matrix33 = alpha;
ImageAttributes ia = new ImageAttributes();
ia.SetColorMatrix(
cm,
ColorMatrixFlag.Default,
ColorAdjustType.Bitmap
);
Bitmap bmp = new Bitmap(img.Width, img.Height);
using (Graphics g = Graphics.FromImage(bmp))
{
while (cm.Matrix33 >= 0.0f)
{
Rectangle rect = Rectangle.Empty;
if (direction == dbm_Direction.Right || direction == dbm_Direction.Left)
rect = new Rectangle(x, 0, step, img.Height);
else
rect = new Rectangle(0, x, img.Width, step);
g.DrawImage(
img,
rect,
rect.X,
rect.Y,
rect.Width,
rect.Height,
GraphicsUnit.Pixel,
ia
);
if (direction == dbm_Direction.Right || direction == dbm_Direction.Bottom)
x += step;
else if (direction == dbm_Direction.Left || direction == dbm_Direction.Top)
x -= step;
alpha -= alphaFactor;
cm.Matrix33 = alpha;
ia.SetColorMatrix(
cm,
ColorMatrixFlag.Default,
ColorAdjustType.Bitmap
);
}
}
return bmp;
}
#endregion
#region dbm_Direction
public enum dbm_Direction : short
{
/// <summary>
/// Vers la droite.
/// </summary>
Right = 0,
/// <summary>
/// Vers la gauche.
/// </summary>
Left = 1,
/// <summary>
/// Vers le haut.
/// </summary>
Top = 2,
/// <summary>
/// Vers le bas.
/// </summary>
Bottom = 3
}
#endregion
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Ajouter dynamiquement des composants graphiques [ par Sebulba ]
Bonjourj'ai un thread qui doit créer un élément graphique sur la form pour pouvoir se représenter.mon problème est que je n'arrive pas à afficher une
Classe Garphics [ par Nakah ]
Voila je dessine une image dans mon panel grace a l'objet Graphics, maintenant je voudrais savoir s'il est possible d'enregistrer mon image, si oui co
detection d image [ par pogo ]
bonjour za tous,je cherche un moyen (simple...) de detecter une image dans un flux. je m'explique : il faut que sur une fourchette courte (10 min de v
Problème d'Upload de fichier Image [ par pchanet ]
Bonjour à tous,J'ai un problème avec le code de téléchargement d'une image. Lorsque j'active le téléchargement, une erreur s'affiche :->> "La ré
Conversion d'un BMP en JPG [ par projetbts ]
Bonjour,Je cherche, par besoin de place, à convertir une image bmp en jpeg. Celle ci est, dans un premier temps, destiné a être placé en image (img sr
comment faire apparaitre une image dans un panel [ par dola7938 ]
en fait j'ai change de jeu et je me sui mis sur un puzzle :DMais je ne trouve pas comment faire apparaitre une image dans un panel lorsque je clike su
Cast Image Stocké BDD Access [ par kbumbazz ]
Salut a vous ... alors bon week end ?bon voila une des 1ere requête de la semaine :)J'ai une image sotckée dans un BDD Access avec un champ de type Ob
Problème VS.Net (Picturebox ressource exécution) [ par linx20 ]
Voila mon ptit probleme la compilation se passe sans warningLors de l'éxécution de ma premiere form et au moment de InitializeComponent, VisualStudio
Image 8 vers image 10 ou 12 voir 16 bits [ par pirate75000 ]
Comment passer une image 8 bits de niveau de grisen une image de:10 bits niveau de gris ou12 bits niveau de gris ou16 bits niveau de grisMerci
Image, Pixel, ... ? [ par streetlife ]
Bonjour!Comment faire pour construire une image ou un bitmap avec un rectangle en coordonnées ecran.En effet, je souhaite construire une image (ou aut
|
Derniers Blogs
[TECHDAYS2012] OUI J'Y SERAI![TECHDAYS2012] OUI J'Y SERAI! par JeremyJeanson
Bonsoir, Certes, je l'annonce avec un peu de retard, mais je serai effectivement au Techdays demain. Comme l'an dernier, je participerai au programme ATE (Ask The Expert). Si vous avez des questions Workflow, WCF, AppFabric ou plus généralement .net, n'hé...
Cliquez pour lire la suite de l'article par JeremyJeanson TFS INTEGRATION TOOLS - SUIVI DES SYNCHRONISATIONS AVEC REPORTING SERVICESTFS INTEGRATION TOOLS - SUIVI DES SYNCHRONISATIONS AVEC REPORTING SERVICES par vfabing
Afin de s'assurer du bon fonctionnement des différentes synchronisations effectuées par les TFS Integration Tools, 2 rapports sont présents dès l'installation. Il suffit alors d'effectuer les manipulations suivantes pour pouvoir les visualiser : Loca...
Cliquez pour lire la suite de l'article par vfabing CSS CONTENT STATE SELECTORS (PERSONNAL DRAFT)CSS CONTENT STATE SELECTORS (PERSONNAL DRAFT) par FREMYCOMPANY
Bonjour à tous, Je viens de publier une proposition comprenant 5 pseudo-classes pour le CSS Working Group ayant trait à l'état de chargement d'un élément (ex: IMG,VIDEO,AUDIO,OBJECT pour l'HTML.). Si le c½ur vous en dit, vous pouvez retrouver cette p...
Cliquez pour lire la suite de l'article par FREMYCOMPANY MBA : POURQUOI FAIRE ET COMMENT LE CHOISIR ?MBA : POURQUOI FAIRE ET COMMENT LE CHOISIR ? par ROMELARD Fabrice
Formation initiale Durant la formation, le découpage classique est le suivant (je donnerai les équivalences Suisse lorsque je les connaîtrais) : Ecole primaire jusqu'au Collège : Formation générale permettant d'obtenir les méthodes...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice Y'A DES ERREURS QUI PEUVENT RENDRE LE DéVELOPPEUR VIOLENTY'A DES ERREURS QUI PEUVENT RENDRE LE DéVELOPPEUR VIOLENT par Aleks
Quand on a ce genre d'erreur sans log :
Et bas on a juste envie de choper le gas de Microsoft qu'a développé ça et lui foutre des baffes de Coboye ! ...
Cliquez pour lire la suite de l'article par Aleks
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|