Graphics.GetHdc Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Hiermee haalt u de ingang op naar de apparaatcontext die aan deze Graphicscontext is gekoppeld.
public:
virtual IntPtr GetHdc();
public:
IntPtr GetHdc();
public IntPtr GetHdc();
abstract member GetHdc : unit -> nativeint
override this.GetHdc : unit -> nativeint
member this.GetHdc : unit -> nativeint
Public Function GetHdc () As IntPtr
Retouren
nativeint
Afhandelen naar de apparaatcontext die aan deze Graphicscontext is gekoppeld.
Implementeringen
Voorbeelden
Het volgende codevoorbeeld is ontworpen voor gebruik met Windows Forms en vereist PaintEventArgse, een parameter van de Paint gebeurtenis-handler. In het voorbeeld ziet u hoe u een Windows GDI-functie aanroept om dezelfde taak uit te voeren als een GDI+ Graphics methode. De code voert de volgende acties uit:
Definieert de interoperabiliteit DllImportAttribute kenmerk voor het Windows DLL-bestand gdi32.dll. Dit DLL-bestand bevat de gewenste GDI-functie.
Hiermee definieert u de Rectangle functie in dat DLL-bestand als extern.
Hiermee maakt u een rode pen.
Met de pen tekent u een rechthoek naar het scherm met behulp van de GDI+ DrawRectangle -methode.
Definieert een variabele van het interne type
hdcaanwijzer en stelt de waarde ervan in op de ingang voor de apparaatcontext van het formulier.Hiermee tekent u een rechthoek naar het scherm met behulp van de functie GDI Rectangle .
Hiermee wordt de apparaatcontext vrijgegeven die wordt vertegenwoordigd door de
hdcparameter.
private:
[System::Runtime::InteropServices::DllImportAttribute("gdi32.dll")]
static bool Rectangle( IntPtr hdc, int ulCornerX, int ulCornerY, int lrCornerX, int lrCornerY );
public:
void GetHdcForGDI1( PaintEventArgs^ e )
{
// Create pen.
Pen^ redPen = gcnew Pen( Color::Red,1.0f );
// Draw rectangle with GDI+.
e->Graphics->DrawRectangle( redPen, 10, 10, 100, 50 );
// Get handle to device context.
IntPtr hdc = e->Graphics->GetHdc();
// Draw rectangle with GDI using default pen.
Rectangle( hdc, 10, 70, 110, 120 );
// Release handle to device context.
e->Graphics->ReleaseHdc( hdc );
}
public class GDI
{
[System.Runtime.InteropServices.DllImport("gdi32.dll")]
internal static extern bool Rectangle(
IntPtr hdc,
int ulCornerX, int ulCornerY,
int lrCornerX, int lrCornerY);
}
private void GetHdcForGDI1(PaintEventArgs e)
{
// Create pen.
Pen redPen = new Pen(Color.Red, 1);
// Draw rectangle with GDI+.
e.Graphics.DrawRectangle(redPen, 10, 10, 100, 50);
// Get handle to device context.
IntPtr hdc = e.Graphics.GetHdc();
// Draw rectangle with GDI using default pen.
GDI.Rectangle(hdc, 10, 70, 110, 120);
// Release handle to device context.
e.Graphics.ReleaseHdc(hdc);
}
Public Class GDI
<System.Runtime.InteropServices.DllImportAttribute("gdi32.dll")> _
Friend Shared Function Rectangle(ByVal hdc As IntPtr, _
ByVal ulCornerX As Integer, ByVal ulCornerY As Integer, ByVal lrCornerX As Integer, _
ByVal lrCornerY As Integer) As Boolean
End Function
End Class
<System.Security.Permissions.SecurityPermission( _
System.Security.Permissions.SecurityAction.LinkDemand, Flags:= _
System.Security.Permissions.SecurityPermissionFlag.UnmanagedCode)> _
Private Sub GetHdcForGDI1(ByVal e As PaintEventArgs)
' Create pen.
Dim redPen As New Pen(Color.Red, 1)
' Draw rectangle with GDI+.
e.Graphics.DrawRectangle(redPen, 10, 10, 100, 50)
' Get handle to device context.
Dim hdc As IntPtr = e.Graphics.GetHdc()
' Draw rectangle with GDI using default pen.
GDI.Rectangle(hdc, 10, 70, 110, 120)
' Release handle to device context.
e.Graphics.ReleaseHdc(hdc)
End Sub
Opmerkingen
De apparaatcontext is een Windows structuur op basis van GDI die een set grafische objecten en de bijbehorende kenmerken definieert, evenals de grafische modi die van invloed zijn op uitvoer. Deze methode retourneert die apparaatcontext met uitzondering van een lettertype. Omdat een lettertype niet is geselecteerd, mislukken aanroepen naar de FromHdc methode met behulp van een ingang die wordt geretourneerd uit de GetHdc methode.
Aanroepen naar de GetHdc en ReleaseHdc methoden moeten in paren worden weergegeven. Tijdens het bereik van een GetHdc en ReleaseHdc methodepaar maakt u meestal alleen aanroepen naar GDI-functies. Aanroepen in dat bereik naar GDI+-methoden van de Graphics parameter die de hdc parameter hebben geproduceerd, mislukken met een ObjectBusy fout. GDI+ negeert ook alle statuswijzigingen in de Graphicshdc parameter in volgende bewerkingen.