tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板 [ツリー表示へ]   [Home]
一括表示(VB6.0)
タイトル動画上に斜線を引きたい
記事No13048
投稿日: 2008/09/19(Fri) 21:11
投稿者kamui
過去ログより、下記ページを参考に DirectShow で PictureBox に動画を表示しています。

http://www.geocities.co.jp/SiliconValley/7406/tips/dshow/

この動画の上に、縦横、斜めの直線(角度、幅の指定あり)を引きたいのです。
縦横の直線は、PictureBox を線に見立てて引くことができたのですが、
斜めの直線はどのようにすれば可能でしょうか?

PictureBox 内に Line オブジェクトを生成しても、動画の下になってしまいうまく表示できません。

どなたか、実現方法をご存知の方、アドバイスをいただけると幸いです。
よろしくお願いいたします。

[ツリー表示へ]
タイトルRe: 動画上に斜線を引きたい
記事No13049
投稿日: 2008/09/20(Sat) 07:07
投稿者花ちゃん
> この動画の上に、縦横、斜めの直線(角度、幅の指定あり)を引きたいのです。

ここのサンプルの No.489  バックが透明なコントロールを作成する のような
ピクチャーボックスを作成し、そのピクチャーボックス上に Line でも文字でも
好きな物をを描いて動画を表示しているピクチャーボックスの上に表示すれば
下記のように表示されます。

http://hanatyan.sakura.ne.jp/samplepic/vb6_489.htm

[ツリー表示へ]
タイトルRe^2: 動画上に斜線を引きたい
記事No13050
投稿日: 2008/09/21(Sun) 05:08
投稿者kamui
> 花ちゃん
ご回答ありがとうございます。

結局、下記のようなコードで、PictureBoxを透過し、難を逃れました。
アドバイス、ありがとうございました!

Option Explicit

Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function SetLayeredWindowAttributes Lib "user32" (ByVal hwnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long
Private Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long

Const LWA_COLORKEY = &H1
Const LWA_ALPHA = &H2
Const GWL_EXSTYLE = (-20)
Const WS_EX_LAYERED = &H80000
Const GWL_HWNDPARENT As Long = -8
Const GWL_HINSTANCE As Long = -6
Const GWL_STYLE As Long = -16
Const WS_CHILD = &H40000000
Const GWL_WNDPROC As Long = -4

Private Sub Form_Load()

Dim Ret As Long

Picture1.BackColor = vbCyan
SetParent Picture1.hwnd, 0
Ret = GetWindowLong(Picture1.hwnd, GWL_EXSTYLE)
Ret = Ret Or WS_EX_LAYERED
SetWindowLong Picture1.hwnd, GWL_EXSTYLE, Ret
SetLayeredWindowAttributes Picture1.hwnd, vbCyan, 0&, LWA_COLORKEY

DoEvents

SetParent Picture1.hwnd, Me.hwnd
SetWindowLong Picture1.hwnd, GWL_HWNDPARENT, Me.hwnd
SetWindowLong Picture1.hwnd, GWL_HINSTANCE, App.hInstance

End Sub

[ツリー表示へ]