Recolorer image pixel par pixel
Bonjour,
Je souhaite écrire un code qui génère une image contenant un nombre donné de carrés de tailles identiques (par ex. 1000) en attribuant une couleur aléatoire à chaque carré.
Il me semble qu'une solution serait de créer une picturebox, d'y intéger une image de 1000 pixels et de la scanner pixel par pixel en attribuant à chaque pixel une couleur avec des valeurs argb aléatoires, puis d'afficher cette nouvelle image.
Problème: je suis novice, un en VB, deux en programmation tout cours ... j'ai cherché sur le net des pistes de codes mais sans trop de succès. Ce n'est peut être pas possible, ou VB n'est peut être pas l'outil approprié ...
Merci
Image artificielle ,compose de carres de couleur
bonjour julienlgz
et aussi à l'ile de beaute qui me rappelle mon vieux directeur d'ecole primaire Cesare.
si si tu peux creer en vb.net une image en memoire et la colorier ,pourvu que tu saches manipuler habilement les classes bitmap ,image et le control picturebox.
il faut t'entrainer tout simplement un certain temps mais c'est possible.
voici un 1er exemple qui lit une image de ton lecteur et l'affiche en point du forme.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| 'exemple d'une image qu'on charge et affiche directement sur la forme
'a une position donne
Public Class Form1
Private pictureBox1 As New PictureBox()
Public Sub New()
' Cet appel est requis par le Concepteur Windows Form.
InitializeComponent()
' Ajoutez une initialisation quelconque après l'appel InitializeComponent().
End Sub
Private Sub DessineImageSurForme(ByVal e As PaintEventArgs)
'charge une image.
Dim nouvImage As Image = Image.FromFile("tonImage.jpg")
' Cree le Point top-left(coin haut-gauche) pour position
'sur la forme l'image
Dim TopLeftCoin As New Point(100, 100)
' Dessine l'image sur la forme
e.Graphics.DrawImage(nouvImage, TopLeftCoin)
End Sub
End Class |
voici un 2eme exemple qui cree une image à partir de rien(banniere) ,l'affiche dans un picturebox et la sauvegarde ensuite sur le lecteur c.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
|
'Banniere francaise à la memoire de Mapoleon 1er à Wagram
'ici un bitmap cree en memoire vide ,colorie et charge dans un picturebox1
'(existant sur la forme) pour etre enregistre par la suite.
Imports System.Drawing
Public Class Form2
Private Sub btnCreeImage_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCreeImage.Click
'adapte la taille du picturbox1
Me.PictureBox1.Size = New Size(210, 110)
Call CreeBitmapExecution()
End Sub
Public Sub CreeBitmapExecution()
'cree un tableau en memoire bitmap legerement plus petit que le picturebox
Dim bitmapTable As New Bitmap(200, 100)
Dim objGraphics As Graphics = Graphics.FromImage(bitmapTable)
'on declare 2 entiers pour gerer position des futures 2 couleurs
Dim posRouge As Integer = 0 'demarre à ligne 0
Dim posBlanc As Integer = 6 'demarre à ligne 5
Dim posBleu As Integer = 11 'demarre à ligne 11
While posBlanc <= 100
'dessine un rectangle rouge(largeur=200xhauteur=10) à ligne =0,col=posred
objGraphics.FillRectangle(Brushes.Red, 0, posRouge, 200, 10)
'dessine un rectangle blanc(largeur=200xhauteur=10) à ligne=0,col=posblanc
objGraphics.FillRectangle(Brushes.White, 0, posBlanc, 200, 10)
'dessine un rectangle bleu(largeur=200xhauteur=10) à ligne=0,col=posbleu
objGraphics.FillRectangle(Brushes.Blue, 0, posBleu, 200, 10)
'espace les lignes des 2 rectangles futurs en dessous de 20
posRouge += 20
posBlanc += 20
posBleu += 20
End While
'a la fin on affecte le tableau bitmap a notre picturebox1
PictureBox1.Image = bitmapTable
'enregistre l'image sur c: en bmp
PictureBox1.Image.Save("c:\bannier.bmp")
'enregistre l'image sur c: en jpeg
PictureBox1.Image.Save("c:\bannier.jpeg", System.Drawing.Imaging.ImageFormat.Jpeg)
End Sub
End Class |
bon code.....