salut;
j'ai un problème avec la fonction repaint() qui ne fonctionne pas, quand je traite l'image et je veux travailler avec je peux pas le faire car le repaint ne fait pas son traitement qui est de redessiner l'image traitée.
merci pour votre aide![]()







			
			
			
			 
			
				
salut;
j'ai un problème avec la fonction repaint() qui ne fonctionne pas, quand je traite l'image et je veux travailler avec je peux pas le faire car le repaint ne fait pas son traitement qui est de redessiner l'image traitée.
merci pour votre aide![]()
Bonsoir,
Je ne crois pas qu'il soit facile de comprendre réellement d'ou viens le problème tant que tu ne donneras pas plus de détails:
sur quel type objet, a quel moment, quel évènement ? Bref, un bout de code, et une explication plus détaillée sera la bien venue afin que qqu'un puisse bien appréhender la "chose".
@+
![]()







			
			
			
			 
			
				
salut;
mon code est le suivant:
c'est un code qui filtre l'image aprés bruitage par un filtre moyenneur; alors que l'image doit etre redessiner par repaint() je veux dire qu'elle doit etre filtrer , mais ce n'est pas le cas dans ce code.
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
 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
40
41
42
43 Graphics::TBitmap *Srce; Graphics::TBitmap *Dest ; Srce = Image2->Picture->Bitmap; Dest = Image2->Picture->Bitmap; int we = Srce->Width-1; int he = Srce->Height; int r; int g; int b; jRgb *P = (jRgb*)Srce->ScanLine[0]; jRgb *L = (jRgb*)Srce->ScanLine[1]; jRgb *N; jRgb *T; for(int y = 1; y < he; y++) { N = (jRgb*)Srce->ScanLine[y]; T = (jRgb*)Dest->ScanLine[y-1]; for(int x = 1; x < we; x++) { b = ( P[x-1].Blue + P[x].Blue + P[x+1].Blue + L[x-1].Blue + L[x].Blue + L[x+1].Blue + N[x-1].Blue + N[x].Blue + N[x+1].Blue) / 9; g = ( P[x-1].Green + P[x].Green + P[x+1].Green + L[x-1].Green + L[x].Green + L[x+1].Green + N[x-1].Green + N[x].Green + N[x+1].Green) /9; r = ( P[x-1].Red + P[x].Red + P[x+1].Red + L[x-1].Red + L[x].Red + L[x+1].Red + N[x-1].Red + N[x].Red + N[x+1].Red) / 9; // Sortie vers le bitmap 24 bits T[x].Blue = (Byte)b; T[x].Green = (Byte)g; T[x].Red = (Byte)r; } P = L; L = N; } Image2->Repaint();
merci pour votre aide![]()
Salut !
La boucle en (y) doit commencer en (2) et non en (1) !
Pour la Repaint, je vais tester ça puisque j'utilise un Graphics::TBitmap et non un TImage pour la sortie; ce bitmap étant ensuite dessiné directement sur un form dans sa méthode OnPaint... donc...
Peut-être s'assurer d'une chose :
A plus !
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
 1
2 Image2->Picture->Bitmap->PixelFormat = pf24bit;
Partager