Re: HMG Graph based on Bos Taurus
Posted: Tue Dec 06, 2016 5:17 am
That shows your kindness and pride towards your profession. Kudos.
Exclusive forum for HMG, a Free / Open Source xBase WIN32/64 Bits / GUI Development System
https://hmgforum.com/
I see, Very extensive breeds types in cattle... sorry for my joking.srvet_claudio wrote:In this case it is not a joke and it has no double meaning the name, Bos Taurus is the scientific name of the cattle.
Code: Select all
#include <hmg.ch>
Function Main
define window main at 0, 0 width 800 height 600 main
define button start
row 10
col 10
caption 'Start'
action start_test()
end button
define label test
row 10
col 110
value ''
end label
end window
Main.Center
Main.Activate
Return
function start_test
local j
local hBitMap, hDC, BTStruct
cfile :='image.bmp'
hBitMap := BT_BitmapCreateNew ( 2000, 2000, { 255, 255, 255 } )
hDC := BT_CreateDC( hBitMap, BT_HDC_BITMAP, @BTStruct )
for j := 1 to 10000
BT_DrawLine (hDC, 10, 10, 150, 150, { 0, 0, 0 }, { 0, 0, 0 }, 0.1 )
main.test.value := str( j )
next j
BT_DeleteDC( BTstruct )
BT_BitmapSaveFile(hBitmap, cfile )
BT_BitmapRelease( hBitmap )
return nil
Hi Marek,mol wrote:What I need to change? Sources of Bos Taurus?
Code: Select all
HB_FUNC( BT_DRAW_HDC_POLY )
{
HDC hDC;
HPEN hPen;
HBRUSH hBrush;
HPEN OldPen;
HBRUSH OldBrush;
INT nCountX, nCountY;
COLORREF ColorLine, ColorFill;
INT nWidthLine, nLen;
INT nPOLY, i;
#ifndef __MINGW_H
POINT aPoint [2048];
#endif
hDC = (HDC) HB_PARNL (1);
nCountX = (INT) hb_parinfa(2,0);
nCountY = (INT) hb_parinfa(3,0);
ColorLine = (COLORREF) hb_parnl (4);
nWidthLine = (INT) hb_parni (5);
ColorFill = (COLORREF) hb_parnl (6);
nPOLY = (INT) hb_parni (7);
nLen = min( nCountX, nCountY );
if ( nLen > 0 )
{
#ifdef __MINGW_H
POINT aPoint[ nLen ];
#endif
for ( i=0; i < nLen; i++ )
{ aPoint[ i ].x = hb_parvni ( 2, i + 1 );
aPoint[ i ].y = hb_parvni ( 3, i + 1 );
}
SaveDC(hDC);
hPen = CreatePen(PS_SOLID, nWidthLine, ColorLine);
OldPen = ( HPEN ) SelectObject(hDC, hPen);
hBrush = CreateSolidBrush( ColorFill );
OldBrush = ( HBRUSH ) SelectObject(hDC, hBrush);
switch( nPOLY )
{
case BT_DRAW_POLYLINE:
Polyline( hDC, aPoint, nLen );
break;
case BT_DRAW_POLYGON:
Polygon( hDC, aPoint, nLen );
break;
case BT_DRAW_POLYBEZIER:
PolyBezier( hDC, aPoint, nLen );
break;
}
SelectObject( hDC, OldBrush );
DeleteObject(hBrush);
SelectObject( hDC, OldPen );
DeleteObject(hPen);
RestoreDC(hDC, -1);
hb_retl( TRUE );
}
else
hb_retl( FALSE );
}
There are a similar bugs with the missed SelectObject calling in the others functions also.SelectObject( hDC, OldBrush );
...
SelectObject( hDC, OldPen );