eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingRysowanie wartości tablicy w okienku. › Re: Rysowanie wartości tablicy w okienku.
  • Data: 2009-09-26 19:07:43
    Temat: Re: Rysowanie wartości tablicy w okienku.
    Od: "Mariusz Marszałkowski" <b...@g...SKASUJ-TO.pl> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    Jan Górski <j...@g...com> napisał(a):

    > Dzi=EAkuj=EA za pomoc, w=B3a=B6nie o tak=B1 odpowied=BC mi chodzi=B3o. Docz=
    > ytam
    > sobie to i postaram si=EA sam wymodzi=E6.

    Poniżej obiecany gotowiec :)

    Pozdrawiam



    #undef UNICODE

    #include <windows.h>
    #include <stdio.h>

    HINSTANCE hInst;
    int w,h,wrow;
    HBITMAP mem_bmp;
    HDC mem_hdc;
    unsigned __int8 *pix;
    unsigned __int8 *buf1;
    unsigned __int8 *buf2;
    unsigned __int8 *ptr_buf1,*ptr_buf2;
    unsigned __int8 colot_table[5*5*5];

    LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
    PAINTSTRUCT ps;
    HDC hdc;
    static DWORD czas=0;
    static DWORD frame=0;
    static TCHAR buf[256];
    static int start=0;
    static int licz=0;

    switch (message)
    {
    case WM_CREATE:
    break;
    case WM_TIMER:
    InvalidateRect( hWnd , NULL , FALSE );
    break;
    case WM_KEYDOWN:
    if( wParam == VK_ESCAPE )
    DestroyWindow( hWnd );
    if( wParam == VK_SPACE )
    {
    if( start )
    KillTimer( hWnd , 0 );
    else
    {
    SetTimer( hWnd , 0 , 0 , NULL );
    czas = GetTickCount();
    }
    start = !start;
    }
    break;
    case WM_PAINT:
    {
    int x,y,x1,y1,t,sum;
    unsigned __int8 *swp;
    t = GetTickCount();
    if( t - czas > 5000 )
    {
    sprintf( buf , "fps: %5.2lf", frame * 1000.0 / ( t - czas ) );
    czas = t;
    frame = 0;
    }
    frame ++ ;
    hdc = BeginPaint(hWnd, &ps);
    for( y=20 ; y<h-20 ; y++ )
    {
    for( x=20 ; x<w-20 ; x++ )
    {
    sum = 0;
    for(x1=x-2;x1<=x+2;x1++)
    for(y1=y-2;y1<=y+2;y1++)
    sum += ptr_buf1[y1*w+x1];
    sum -= ptr_buf1[y*w+x];
    ptr_buf2[y*w+x] = colot_table[sum];
    pix[y*wrow*3+x*3+0] = 0;
    pix[y*wrow*3+x*3+1] = 0;
    pix[y*wrow*3+x*3+2] = ptr_buf2[y*w+x] ? 255 : 0;
    }
    }
    TextOut( mem_hdc , 20 , 30 , buf , (int)strlen(buf) );
    BitBlt( hdc , 0 , 0 , w , h , mem_hdc , 0 , 0 , SRCCOPY );
    EndPaint(hWnd, &ps);
    swp = ptr_buf1;
    ptr_buf1 = ptr_buf2;
    ptr_buf2 = swp;
    break;
    }
    case WM_DESTROY:
    PostQuitMessage(0);
    break;
    default:
    return DefWindowProc(hWnd, message, wParam, lParam);
    }
    return 0;
    }


    int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR
    lpCmdLine, int nCmdShow)
    {
    int i;
    MSG msg;
    WNDCLASSEX wcex;
    hInst = hInstance;

    wcex.cbSize = sizeof(WNDCLASSEX);

    wcex.style = CS_HREDRAW | CS_VREDRAW;
    wcex.lpfnWndProc = WndProc;
    wcex.cbClsExtra = 0;
    wcex.cbWndExtra = 0;
    wcex.hInstance = hInstance;
    wcex.hIcon = LoadIcon(NULL, IDI_APPLICATION );
    wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
    wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
    wcex.lpszMenuName = NULL;
    wcex.lpszClassName = TEXT("dywan_wnd_class");
    wcex.hIconSm = NULL;

    ATOM res = RegisterClassEx(&wcex);

    w = GetSystemMetrics(SM_CXSCREEN);
    h = GetSystemMetrics(SM_CYSCREEN);

    mem_hdc = CreateCompatibleDC( NULL );

    BITMAPINFO bmi;
    memset(&bmi,0,sizeof(bmi));
    bmi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
    bmi.bmiHeader.biWidth = w;
    bmi.bmiHeader.biHeight = -h;
    bmi.bmiHeader.biPlanes = 1;
    bmi.bmiHeader.biCompression = BI_RGB;
    bmi.bmiHeader.biBitCount = 24;
    mem_bmp = CreateDIBSection(mem_hdc,&bmi,DIB_RGB_COLORS,(void**
    )&pix,NULL,0);
    SelectObject(mem_hdc,mem_bmp);
    wrow = w;
    while(wrow & 0x3)
    wrow++;
    SetTextColor( mem_hdc , RGB(100,100,255));
    SetBkMode( mem_hdc , TRANSPARENT );
    buf1 = new unsigned __int8[w*h];
    buf2 = new unsigned __int8[w*h];
    ptr_buf1 = buf1;
    ptr_buf2 = buf2;
    memset( buf1 , 0 , w*h );
    memset( buf2 , 0 , w*h );

    memset( colot_table , 0 , sizeof(colot_table) );
    colot_table[3] = 5;
    colot_table[4] = 2;
    colot_table[7] = 5;
    colot_table[11] = 1;
    colot_table[18] = 5;
    colot_table[29] = 1;
    colot_table[46] = 3;
    colot_table[76] = 1;
    colot_table[123] = 5;

    ptr_buf1[w*(h/2-2)+w/2-2] = 1;
    ptr_buf1[w*(h/2-2)+w/2+1] = 1;
    ptr_buf1[w*(h/2+1)+w/2-2] = 1;
    ptr_buf1[w*(h/2+1)+w/2+1] = 1;

    HWND hWnd = CreateWindow(TEXT("dywan_wnd_class"), TEXT("xx") ,
    WS_POPUP|WS_VISIBLE , 0 , 0, w , h , NULL, NULL, hInstance, NULL);

    while (GetMessage(&msg, NULL, 0, 0))
    {
    TranslateMessage(&msg);
    DispatchMessage(&msg);
    }
    delete[] buf1;
    delete[] buf2;
    DeleteDC( mem_hdc );
    DeleteObject( mem_bmp );

    return (int) msg.wParam;
    }


    --
    Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: