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


片岡 直之  2003-02-21 06:20:53  No: 77182

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

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

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

BackSurf.SetFont(Form1.Font)

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

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


Y2  2003-02-22 04:47:17  No: 77183

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加