Article View: pl.comp.lang.c
Article #1616Wysrodkowanie bitmapy w oknie ...
From: ! Tomasz Surma
Date: Tue, 17 Feb 1998 20:21
Date: Tue, 17 Feb 1998 20:21
65 lines
3024 bytes
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-mailShow 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