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;
}
} |
Partager