Icons
in beliebiger Größe
Außer den bisher verwendeten Icons in den Standardgrößen 16x16 bzw. 32x32, können
Icons auch in anderen Größen spezifiziert werden. Die maximale Größe hierbei liegt,
durch 'Eigenversuche' ermittelt, bei 126x126 bei 256 Farben. Um ein Icon mit einer
'beliebigen' Größe zu erstellen, öffnen Sie wie gewohnt den Icon-Editor in der Ressource-Ansicht.
Klicken Sie danach den Button Neues Geräteabbild oberhalb des Editorfensters
an und es wird folgender Dialog eingeblendet:

Im Dialog ist dann der Button Benutzerdefiniert... anzuklicken um die
Parameter des neue Icons einzugeben.

 |
Beachten Sie dabei bitte, dass Sie die maximale Größe von 126x126 nicht
überschreiten dürfen sonst kann das Icon später nicht dargestellt werden. Der
Icon-Editor lässt die Erstellung von beliebig großen Icons zu. |
Um das Icon zu laden, wird die bereits früher erwähnte API-Funktion LoadImage(...)
verwendet. Enthält die Icon-Ressource Icons mit unterschiedlichen Auflösungen, so
müssen Sie unbedingt die Auflösung des zu ladenden Icons angegeben.
CIconsView::CIconsView()
{
// ZU ERLEDIGEN: Hier Code zur Konstruktion einfügen,
// Wizard-Icon laden
// Nicht CWinApp::LoadIcon() verwenden da nur Standard-Groesse
geladen wird
m_hIWizard = (HICON)::LoadImage(AfxGetApp()->m_hInstance,MAKEINTRESOURCE(IDI_WIZARD),
IMAGE_ICON,0,0,0);
ASSERT(m_hIWizard);
// Hut-Icon laden, auch mal
2. Moeglichkeit ausprobieren
m_hIHat = (HICON)::LoadImage(0,"res\\hat.ico",IMAGE_ICON,50,51,LR_LOADFROMFILE);
// m_hIHat = (HICON)::LoadImage(0,"res\\hat.ico",IMAGE_ICON,0,0,LR_LOADFROMFILE|LR_DEFAULTSIZE);
ASSERT(m_hIHat);
} |
Die Darstellung des Icons kann dann innerhalb der OnDraw(...) Methode
mit der ebenfalls bekannten Methode DrawIconEx(...) erfolgen.
void CIconsView::OnDraw(CDC*
pDC)
{
CIconsDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// ZU ERLEDIGEN: Hier Code zum Zeichnen der ursprünglichen Daten
hinzufügen
// Zum Zeichnen nicht DrawIcon()
verwenden da Icon sonst
// nur in der Groesse 32x32 dargestellt wird
// pDC->DrawIcon(m_nIconPos+160,nMOVELINE+110,m_hIHat);
// pDC->DrawIcon(m_nIconPos,nMOVELINE,m_hIWizard);
::DrawIconEx(*pDC,m_nIconPos,nMOVELINE,m_hIWizard,0,0,0,0,DI_NORMAL);
::DrawIconEx(*pDC,m_nIconPos+160,nMOVELINE+90,m_hIHat,0,0,0,0,DI_NORMAL);
} |
Beachten Sie auch die Kommentare in den obigen Listings!
 |
Zum Laden eines Icons mit einer anwenderdefinierten Größe sollten Sie nicht
die CWinApp-Methode LoadIcon(...) verwenden, da diese nur
Icons mit der Standard-Größe lädt.
Außerdem sollte zum Zeichnen eines Icon nicht die CDC-Methode DrawIcon(...)
verwendet werden, da die Icons hierbei immer in der Größe 32x32 dargestellt
werden. |
Das fertige Programm zu diesem Thema finden Sie unter
07Ressourcen\GreatIcons.
|