本ページは公開が終了した情報の複製であり、掲載時点での情報です。本ページに記載されている内容について各所に問い合わせることはご遠慮下さい。
サポート技術情報

[MSC]_floodfill 関数の障害

文書番号: 402051

最終更新日: 2004/04/27


この資料は以下の製品について記述したものです。


概要

この資料は、グラフィックライブラリ _floodfill 関数による不正な描画について説明 したものです。

詳細

_floodfill系の関数で塗り潰す領域内に、境界色と同じ色の点が複数表示されている と、塗り潰しが完全に行われなかったり、ハングアップする場合があります。
点がある程度、密になると発生します。
領域を_rectangle 関数以外の方法で描画した場合も同じです。
下記のサンプルプログラムでは、WIDTH の値が 6 以下だと塗り潰しが不完全です。

再現プログラム

  #include <graph.h>
  #include <conio.h>
  #include <stdio.h>
  #include <stdlib.h>
  void main( int argc, char *argv[] )
  {
      short  WIDTH;
      short  x, y, color, fillx, filly;
      WIDTH = (short)atoi( argv[1] );
      WIDTH = (WIDTH<=0) ? 5 : WIDTH;
      printf("%d", WIDTH );
      _setvideomode( _MAXRESMODE );       /* QuickC2.0 では _98RESS16COLOR */
      _rectangle( _GBORDER, 1, 1, 638, 398 );
      for( y = 1; y < 398; y+=WIDTH )
          for( x = 1; x < 638; x+=WIDTH )
              _setpixel( x, y );
      color = _setcolor( 4 );
      fillx = 80;
      filly = 80;
      _floodfill( fillx, filly, color );
      getch();
      _setvideomode( _DEFAULTMODE );
  }

原因

_floodfill 関数の障害です。

対処方法

塗り潰しの後に点を表示してください。
( _setpixel() と _fllodfill() の実行順序を逆にしてください。)

詳細

  • Visual C++ は、米国 Microsoft Corporation の商標です。

Keywords: KBBUG KB402051
Technology: kbAudDeveloper kbCCompPDS600DOS kbCCompSearch kbQC200 kbvc150 kbVCsearch kbZNotKeyword3 kbZNotKeyword8

inserted by FC2 system