掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
VB.NETでAPIを使用し線・円を描画するには? (ID:111212)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
ありがとうございます。プログラムを作成中のマシンとは違う別のマシンのテキスト (WIN32API.TXT)を見ながら打ち込んでいたので”GetDC”だけでなく 宣言部の大文字小文字が滅茶苦茶でした。調べることなどに半日以上つぎ込んでいたので 集中力が不足していたようです。それに[Pic1DC = GetDC(PictureBox1.Handle.ToInt32)] の部分にまったく自信がもてないので質問させていただきました。ご指摘のとおり直して みたのですが描画できなかったので、ふと思いついてbackcolorプロパティを黒から 別の色にかえてみたところ黒色の線で描画できました。またここから調べ物が始まりました。 VB5ではFORECOLORプロパティで線の色を変えられたのですがそうはいきません。 結局XOR描画までは行っていませんが以下のような感じで線をひくところまではできました。 Imports System.DRAWING Public Class Form1 Inherits System.Windows.Forms.Form 'Structure POINTAPI ' Public x, y As Integer 'End Structure 'VB5で用いられるPOINTAPIとVB.NETのPOINT構造体の定義内容が一緒なので以下のように定義しなおした。 Private Declare Function MoveToEx Lib "gdi32.DLL" Alias "MoveToEx" (ByVal hdc As Integer, ByVal x As Integer, ByVal y As Integer, ByVal lpPoint As Point) As Integer Private Declare Function LineTo Lib "gdi32.DLL" Alias "LineTo" (ByVal hdc As Integer, ByVal x As Integer, ByVal y As Integer) As Integer Private Declare Function GetDC Lib "user32" Alias "GetDC" (ByVal hWnd As Integer) As Integer Private Declare Function CreatePen Lib "gdi32" Alias "CreatePen" (ByVal nPenStyle As Integer, ByVal nWidth As Integer, ByVal crColor As Integer) As Integer Private Declare Function SelectObject Lib "gdi32" Alias "SelectObject" (ByVal hdc As Integer, ByVal hObject As Integer) As Integer Private Declare Function DeleteObject Lib "gdi32" Alias "DeleteObject" (ByVal hObject As Integer) As Integer '線形 Public PS_SOLID As Integer = 0 略 Private Sub PictureBox1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseMove Dim Pic1DC As Integer Dim NullPoint As Point Dim Ret As Integer Dim hPen As Long = CreatePen(PS_SOLID, 1, &HFF00FF) Pic1DC = GetDC(PictureBox1.Handle.ToInt32) Dim hOldPen As Long = SelectObject(Pic1DC, hPen) Ret = MoveToEx(Pic1DC, 100, 100, NullPoint) Ret = LineTo(Pic1DC, e.X, e.Y) SelectObject(Pic1DC, hOldPen) DeleteObject(hPen) End Sub 本当にありがとうございます。今日一日を満足してこれから一杯やりに出かけます。 また質問させていただくこともあると思います。よろしくお願いいたします。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.