DirectDrawでのフォントを変更する方法を教えて下さい


片岡 直之  2003-02-20 21:20:53  No: 77182  IP: [192.*.*.*]

はじめまして、WinXP,VB.net,DirectX7でゲームを作っている者です。
DrawTextで表示する文字のフォントを変更したいので、

Dim Font as DxVbLib.iFont
BackSurf.SetFont(Font)

の様に書いたのですが、エラーが発生してしまいます。
また、どこかのHPに書いてあった、

BackSurf.SetFont(Form1.Font)

というような方法でもエラーが発生してしまいます。
エラーは、「指定されたキャストは有効ではありません。」という内容です。

詳しい方教えて下さい。
宜しくお願いします。

編集 削除
Y2  2003-02-21 19:47:17  No: 77183  IP: [192.*.*.*]

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のアプリケーションをつくる項目が追加されているくらいです。

編集 削除