🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.c
Article #1616

Wysrodkowanie bitmapy w oknie ...

#1616
From: ! Tomasz Surma
Date: Tue, 17 Feb 1998 20:21
65 lines
3024 bytes
Witam,
  moje pytanie dotyczy wysrodkowania bitmapy.
  Zaczerpnalem fragment z przykladu SHOWDIB
  z funkcji OnDraw klasy widoku. Tu nalezaloby 
  dokonac zmian. Mysle ze potrzebne jest uzyskanie 
  aktualnego rozmiaru okna glownej ramy, i z jego
  pomoca i wymiarami bitmapy obliczyc wspolrzedne 
  jej umieszczenia. Ale nie wiem jak uzyskac rozmiar okna.

  Jak zmodyfikowac ponizszy fragment ?
  Dzieki za wszelka pomoc
           Tom

//=====================================================================
HDIB hDIB = pDoc->GetHDIB();
if (hDIB != NULL)
{
  LPSTR lpDIB = (LPSTR) ::GlobalLock((HGLOBAL) hDIB);
  int cxDIB = (int) ::DIBWidth(lpDIB); // Size of DIB - x
  int cyDIB = (int) ::DIBHeight(lpDIB); // Size of DIB - y
  ::GlobalUnlock((HGLOBAL) hDIB);

  CRect rcDIB;                           
  rcDIB.top = 0;                                  
  rcDIB.left = 0;
  rcDIB.right = cxDIB;            
  rcDIB.bottom = cyDIB;           
  CRect rcDest;                          
  if (pDC->IsPrinting())   // printer DC
   {
    // get size of printer page (in pixels)
    int cxPage = pDC->GetDeviceCaps(HORZRES);
    int cyPage = pDC->GetDeviceCaps(VERTRES);
    // get printer pixels per inch    
    int cxInch = pDC->GetDeviceCaps(LOGPIXELSX);
    int cyInch = pDC->GetDeviceCaps(LOGPIXELSY);
  
    // Best Fit case -- create a rectangle which preserves
    // the DIB's aspect ratio, and fills the page horizontally.
    //
    // The formula in the "->bottom" field below calculates the Y
    // position of the printed bitmap, based on the size of the
    // bitmap, the width of the page, and the relative size of
    // a printed pixel (cyInch / cxInch).
    //
    rcDest.top = rcDest.left = 0;
    rcDest.bottom = (int)(((double)cyDIB * cxPage * cyInch)
                    / ((double)cxDIB * cxInch));
    rcDest.right = cxPage;
   }
 else   // not printer DC
   {
    rcDest = rcDIB;
   }
 ::PaintDIB(pDC->m_hDC, &rcDest, pDoc->GetHDIB(),
 &rcDIB, pDoc->GetDocPalette());
}
//=====================================================================
-- 
__________________________________________________________
Tomasz Surma     ZACHODNIOPOMORSKA SZKOLA BUSINESSU
                                       (School of business    Szczecin)
**********************************************************
 WWW :                  http://www.eurnet.com/transword/tomtest  
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Technical Details
Message-ID: <34E9F13B.4B2@polbox.com>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!news.icm.edu.pl!not-for-mail

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!news.icm.edu.pl!not-for-mail
From: "! Tomasz Surma" <walker99@polbox.com>
Newsgroups: pl.comp.lang.c
Subject: Wysrodkowanie bitmapy w oknie ...
Date: Tue, 17 Feb 1998 21:21:15 +0100
Organization: ICM's news server
Lines: 66
Message-ID: <34E9F13B.4B2@polbox.com>
Reply-To: walker99@polbox.com
NNTP-Posting-Host: pppa17.wroclaw.tpnet.pl
Mime-Version: 1.0
X-Mailer: Mozilla 3.0 (Win95; I)
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit