DC maße bekommen, verkleinern



  • hola leute

    wie bekommt man die laenge und hoehe eines DCs ?
    hab es mit GetDeviceCaps versucht, bekomme jedoch falsche ergebnisse.

    weiters moechte ich mit DrawText und DT_SINGLELINE|DT_VCENTER|DTCENTER enen text mittig ausgeben. aber nicht mittig vom gesammten DC her sondern von einem bestimmten bereich. wie kann man das machen ?

    Meep Meep



  • Ein DC selbst hat eigentlich keine Größe.
    Das Bitmap auf dem Du zeichnest hat z.B. eine oder der ClientBereich eines Fensters etc.
    Also kannst Du davon die Maße nehmen...

    Bei DrawText übergibst Du ein Rechteck. Damit kannst Du bestimmen, in welchem Bereich geschrieben und ausgerichtet werden soll.



  • re

    der DC kann von nem button(winapi), TMemo(BCB) oder sonst wo her sein.
    meine zeichenklasse weiß das nicht. und ich moechte nicht erst die groesse des DCs uebergeben muessen. das sollte die klasse selber rausfinden. wie aber mach ich das? ich hab dafuer die funktion im SDK nicht gefunden.

    wegen dem drawtext:
    ich dachte das man irgwndwie die groesse des DCs begrenzen kann.

    Meep Meep



  • An den DC ist eine Bitmap angeknüpft, davon kannst du die Größe rausfinden.

    HDC hDC; // Dein DC
    HBITMAP hBmp = CreateCompatibleBitmap( hDC, 1, 1 );
    HBITMAP hOrigBmp = SelectObject( hDC, hBmp );
    
    // Entweder..
    SIZE Size;
    GetBitmapDimensionsEx( hOrigBmp, &Size );
    // Size.cx & Size.cy
    
    // Oder...
    BITMAP Bm;
    GetObject( hOrigBmp, &Bm, sizeof(Bm) );
    // Bm.bmWidth & Bm.bmHeight
    
    // Nicht vergessen:
    SelectObject( hDC, hOrigBmp );
    DeleteObject( hBmp );
    

    Ungetestet und war nur so ne Idee. Probier mal 🤡



  • mit WindowFromDC bekommst Du ein Handle auf ein Fenster.
    Damit kannst Du dann auch die Größe rausfinden.

    Meep Meep schrieb:

    wegen dem drawtext:
    ich dachte das man irgwndwie die groesse des DCs begrenzen kann.

    kein Kommentar...


Anmelden zum Antworten