2017-08-30 26 views
0

私はC#コンソールアプリケーションプロジェクトを使用してラスターフレームを生成してから ffmpegツールを使用してこれらのフレームからビデオを生成します。私はbmpオブジェクトを描画するためにグラフィックオブジェクトを使用しています フレームを生成する[保存速度は毎秒25フレームです]。私は図形オブジェクトを細かく描くことを実装しました。 「白い背景に」グラフィックオブジェクトをきれいに消去しました。 描画された図形を完全に元に戻しました。 4)私は、背景と インポート画像を設定しようとしましたし、それは非常によくあなたが グラフィカルオブジェクトの上に書くことができるように働いていた[ホワイトペーパー、背景画像かどうか、 画像をインポート...など]C#、オーバーラップバックグラウンドイメージの消去部分の消去を防止する

問題という私は、背景[背景画像、例えば、 グラフィック、座標..etc]を持つ画像の部分を消去しようとします。グラフィックオブジェクトは、消去のストローク[白色 重複】画像の 部分を消去します。確かにこの[白い色を消去するストローク]は、白いページの背景を持つ が正常に機能していました。

私は一種の論理的に、それは白いストローク消しゴムは、[消しゴム、背景を消去ように見えるので、非白

背景にマークするという完璧な理にかなって、大声で考えています。

イレーズストロークのポイントの下に背景イメージ部分をそのまま歪ませて表示するための方法、メカニズム、オーバーレイアルゴリズム、カラーリングメカニズムがありますか?例: 1)背景画像を最初のレイヤーに配置する 2)最上位レイヤーで図面を実行する 3)[最上位レイヤー]を消去するときは、透過色またはストロークメカニズムを使用して背景画像を表示します前に背景と重なり合っていた/部分... ......それは可能ですか?

ご協力いただきありがとうございます。 あなたには完璧な解決策がないかもしれないことに注意してください。しかし、あなたの考えは高く評価されます。

答えて

0

解像度: 元画像(私のすべての図形描画と元画像)をマスキングし、異なる宛先BMPでそれを描く:

 public static Image CropToPath(Image srcImage, List<Point> Points, Pen p, Bitmap bmp) 
    { 


     Bitmap mask = bmp;//new Bitmap(Bitmap.FromFile((new DirectoryInfo(outPutPath)).GetFiles()?.OrderByDescending(f => f.CreationTimeUtc).First()?.FullName)); 

     DrawPoints(Graphics.FromImage(mask), p, Points); 


     using (var imgattr = new ImageAttributes()) 
     { 
      // set color key to Line 
      imgattr.SetColorKey(Color.Gainsboro, Color.Gainsboro); 

      // Draw non-line portions of mask onto original 
      using (var g3 = Graphics.FromImage(srcImage)) 
      { 
       SmoothGraphic(g3).DrawImage(
        mask, 
        new Rectangle(0, 0, srcImage.Width, srcImage.Height), 
        0, 0, srcImage.Width, srcImage.Height, 
        GraphicsUnit.Pixel, imgattr 
       ); 

       return srcImage; 
      } 



     } 


    }