Salut,

j'ai un petit problème avec la visualisation de ma wxScorlledWindow quand je dessine une image plus grande que ma fenêtre. Les scrollbar sont affixes mais quand j'arrive au bout de mon dessin il s'efface. Si quelqu'un pourrait m'aider ce serait génial.

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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
 
void MainFrame::OnCreate( wxCommandEvent& event )
{
	wxClientDC dc( scrollWin );
	scrollWin->DoPrepareDC( dc );
 
	/*wxFontDialog font( this );
	if( font.ShowModal() == wxID_OK );*/
 
	int idx = convDataVtr.size() - 1;
	int heigth = scrollWin->GetSize().GetHeight();
	int width = scrollWin->GetSize().GetWidth();
	int startPointW = 0, startPointH = 0;
	int endPointW = 0, endPointH = 0;
 
	wxPoint centerPoint( scrollWin->GetSize().GetWidth() / 2 , scrollWin->GetSize().GetHeight() / 2 );
	//If image > srolledWindow
	if( bitMapReader.bmpInfoHeader.width > ( unsigned ) scrollWin->GetSize().GetWidth() && bitMapReader.bmpInfoHeader.height > ( unsigned ) scrollWin->GetSize().GetHeight() )
	{
		//set scrollbars with image dimentions
		scrollWin->SetScrollbars( 10, 10, bitMapReader.bmpInfoHeader.width - scrollWin->GetSize().GetWidth(), bitMapReader.bmpInfoHeader.height - scrollWin->GetSize().GetHeight() );
		//Set initial points to start drawing
		startPointW = 0;
		startPointH = 0;
		//set end points for drawing
		endPointW = bitMapReader.bmpInfoHeader.width;
		endPointH = bitMapReader.bmpInfoHeader.height;
	}
	else if( bitMapReader.bmpInfoHeader.width > ( unsigned ) scrollWin->GetSize().GetWidth() || bitMapReader.bmpInfoHeader.height > ( unsigned ) scrollWin->GetSize().GetHeight() )
	{
		//If image width higher
		if( bitMapReader.bmpInfoHeader.width > ( unsigned ) scrollWin->GetSize().GetWidth() )
		{	
			//set scrollbars with image width
			scrollWin->SetScrollbars( 10, 0, bitMapReader.bmpInfoHeader.width, 0 );
 
			//Set limits for drawing
			startPointW = 0;
 
			endPointW = bitMapReader.bmpInfoHeader.width;
 
			if( bitMapReader.bmpInfoHeader.height % 2 == 0 )
				startPointH = centerPoint.y - bitMapReader.bmpInfoHeader.height / 2;
			else
				startPointH = centerPoint.y - ( ( int ) ( bitMapReader.bmpInfoHeader.height / 2 ) + 1 );
 
			endPointH = bitMapReader.bmpInfoHeader.height / 2;
		}//If image height higher
		else if( bitMapReader.bmpInfoHeader.height > ( unsigned ) scrollWin->GetSize().GetHeight() )
		{
			//set scrollbars with image width
			scrollWin->SetScrollbars( 0, 10, 0, bitMapReader.bmpInfoHeader.height );
 
			//Set limits for drawing
			startPointH = 0;
			endPointH = bitMapReader.bmpInfoHeader.height;
 
			if( bitMapReader.bmpInfoHeader.width % 2 == 0 )
				startPointW = centerPoint.x - bitMapReader.bmpInfoHeader.width / 2;
			else
				startPointW = centerPoint.x - ( ( int ) ( bitMapReader.bmpInfoHeader.width / 2 ) + 1 );
 
			endPointW = centerPoint.x + bitMapReader.bmpInfoHeader.width / 2;
		}
	}
	else //Image < scrolledWindow
	{
		if( bitMapReader.bmpInfoHeader.width % 2 == 0 )
			startPointW = centerPoint.x - bitMapReader.bmpInfoHeader.width / 2;
		else
			startPointW = centerPoint.x - ( ( int ) ( bitMapReader.bmpInfoHeader.width / 2 ) + 1 );
 
		if( bitMapReader.bmpInfoHeader.height % 2 == 0 )
			startPointH = centerPoint.y - bitMapReader.bmpInfoHeader.height / 2;
		else
			startPointH = centerPoint.y - ( ( int ) ( bitMapReader.bmpInfoHeader.height / 2 ) + 1 );
 
		endPointW = centerPoint.x + bitMapReader.bmpInfoHeader.width / 2;
		endPointH = centerPoint.y + bitMapReader.bmpInfoHeader.height / 2;
	}
 
	wxPoint startPoint( startPointW , startPointH );
 
	wxPoint endPoint( endPointW, endPointH );
 
	wxPoint currentPoint( endPoint.x,startPoint.y );
 
	for( currentPoint.y; currentPoint.y < endPoint.y; currentPoint.y++ )
	{
		for( currentPoint.x; currentPoint.x > startPoint.x; currentPoint.x-- )
		{
			if( convDataVtr.at( idx ) <= 0x0F )
				dc.SetPen( wxPen( wxColour( wxT("#00000") + wxString::Format( "%X", convDataVtr.at( idx ) ) ) ) );
			else if( convDataVtr.at( idx ) <= 0xFF )
				dc.SetPen( wxPen( wxColour( wxT("#0000") + wxString::Format( "%X", convDataVtr.at( idx ) ) ) ) );
			else if( convDataVtr.at( idx ) <= 0xFFF )
				dc.SetPen( wxPen( wxColour( wxT("#000") + wxString::Format( "%X", convDataVtr.at( idx ) ) ) ) );
			else if( convDataVtr.at( idx ) <= 0xFFFF )
				dc.SetPen( wxPen( wxColour( wxT("#00") + wxString::Format( "%X", convDataVtr.at( idx ) ) ) ) );
			else if(  convDataVtr.at( idx ) <= 0xFFFFF )
				dc.SetPen( wxPen( wxColour( wxT("#0") + wxString::Format( "%X", convDataVtr.at( idx ) ) ) ) );
			else
				dc.SetPen( wxPen( wxColour( wxT("#") + wxString::Format( "%X", convDataVtr.at( idx ) ) ) ) );
 
			dc.DrawPoint( currentPoint );
			idx--;		
		}
 
		currentPoint.x = endPoint.x;
	}
}
Merci,
RCosta.