はじめまして、WinXP,VB.net,DirectX7でゲームを作っている者です。
DrawTextで表示する文字のフォントを変更したいので、
Dim Font as DxVbLib.iFont
BackSurf.SetFont(Font)
の様に書いたのですが、エラーが発生してしまいます。
また、どこかのHPに書いてあった、
BackSurf.SetFont(Form1.Font)
というような方法でもエラーが発生してしまいます。
エラーは、「指定されたキャストは有効ではありません。」という内容です。
詳しい方教えて下さい。
宜しくお願いします。
SetFontの使い方はわからないのですが、
>Dim Font as DxVbLib.iFont
>BackSurf.SetFont(Font)
は、iFontがクラスじゃなくてインターフェイスだからいけないんじゃないでしょうか?
もし、iFontインターフェイスを実装したクラスがあれば、そのクラスをSetFontすれば良いような気がします。
ちなみに、インターフェイスというのは、クラスを外から見たときに、クラスのメンバの使い方を決めたものです。
(例えばメソッドの名前とそれに対応する引数の型の取り決め)
なので、インターフェイス自体に処理をする機能はありません。
例えば、オブジェクトのコピーを作成するCloneメソッドを実装したければ、
Implements ICloneableとして実装して、
Public Overridable Overloads Function Clone() As Object
'このオブジェクトのコピーを作成して、Returnする処理
End Sub
とします。(話がずれてますが)
>BackSurf.SetFont(Form1.Font)
>というような方法でもエラーが発生してしまいます。
>エラーは、「指定されたキャストは有効ではありません。」という内容です。
これは、VB6なら使える方法みたいですね。
そして、
System.Drawing.Fontクラスから
DxVbLib.iFontクラスに
型変換(キャスト)する機能がないのでエラーが出ているみたいです。
長々書いておきながら解決方法がわからなくてすみません。
ちなみに、DirectX8SDKまではVB6などに対応してますが、DirectX9SDKは.netに対応しているのでVB.NET使用者としてはとてもいい感じですよ。
プロジェクトの新規作成にもDirectX9のアプリケーションをつくる項目が追加されているくらいです。
ツイート | ![]() |