我正在研究轮盘赌轮,最终将对其进行动画处理。 以前,口袋中的数字显示出来,经过大量更改后,它们不再显示。 我已经看了一段时间的代码。

希望由于缺少睡眠和初学者水平的知识而错过了一些显而易见的事情。

     #include <stdio.h>
#include <stdlib.h>
#include <gd.h>
#include <math.h>

#define USE_GLOBAL_COLORMAP  1
#define USE_LOCAL_COLORMAP   0

#define LOOP_ANIMATION_FOREVER  1
#define DO_NOT_LOOP_ANIMATION  0
#define AUTO_FRAME_DISPOSAL     1
#define ANIMATION_DELAY         1 /* in milliseconds */

#define IMAGE_WIDTH        500
#define IMAGE_HEIGHT       500
#define CENTERX IMAGE_WIDTH /2
#define CENTERY IMAGE_WIDTH /2

#define WHEEL_DIAMETER     IMAGE_WIDTH - 20
#define INSIDE_COVER_DIAMETER WHEEL_DIAMETER - 80
#define MAX_FRAMES_COUNT   100
#define MOVEMENT_PER_FRAME 5


int main( void )
{


  gdImagePtr Roulette = gdImageCreate (IMAGE_WIDTH, IMAGE_HEIGHT);


  //FILE *animatedGIF;
  FILE *jpgImageFile = NULL;

    int red, black, green, gold, silver, white, trim;
    int frameCount, frameImage;

    double degreesToRadiansMultiplier = 0.0174532925;
      char *pocketNumbers[] = { "32", "15", "19", "4",  "21", "2",  "25", "17",    "34",
                             "6",  "27", "13", "36", "11", "30", "8",  "23", "10",
                             "5",  "24", "16", "33", "1",  "20", "14", "31", "9",
                            "22", "18", "29", "7",  "28", "12", "35", "3",  "26", "0" }; 


     int sliceCounter = 0;
      int sliceStartingAngle = 0;
      int sliceEndingAngle = 0;
      int sliceAngleIncrement = 9;
      int textPositionAngle = 367;
      int textRotationAngle = 270;
      int textPositionX, textPositionY;
      int drawingColor;




      frameImage = gdImageCreate( IMAGE_WIDTH, IMAGE_HEIGHT );
    gdImageColorAllocate( Roulette, 34, 139, 34 );
    red = gdImageColorAllocate( Roulette, 204, 0, 0 );
    white = gdImageColorAllocate( Roulette,  255, 255, 255 );
    green = gdImageColorAllocate( Roulette, 0, 102, 0 );
    gold = gdImageColorAllocate( Roulette, 215, 215, 0 );
    silver = gdImageColorAllocate( Roulette, 192, 192, 192 );
    black = gdImageColorAllocate( Roulette, 0, 0, 0);
    trim = gdImageColorAllocate (Roulette, 102, 51, 0);

    gdImageSetThickness( Roulette, 4 );
    gdImageFilledArc(Roulette, CENTERX, CENTERY, 450, 450, 0, 360, trim, gdArc);

      do
{
sliceStartingAngle = sliceEndingAngle;
sliceEndingAngle = sliceStartingAngle + sliceAngleIncrement;
textRotationAngle -= sliceAngleIncrement;
textPositionAngle -= sliceAngleIncrement;

if ( sliceCounter == 36 )
{
  drawingColor = green;
  sliceEndingAngle += 1;
  textPositionAngle -= 3;
}
else if ( (sliceCounter % 2) == 0 )
{
  drawingColor = red;
  textRotationAngle += 2;
}
else
{
  drawingColor = black;
  sliceEndingAngle += 1;
  textPositionAngle -= 1;
  textRotationAngle -= 1;
}

if ( (sliceCounter % 5) == 0 ) sliceEndingAngle += 1;
if ( (sliceCounter % 7) == 6 ) { textPositionAngle -= 1; textRotationAngle -= 8; }
if ( (sliceCounter % 13) == 12 ) textPositionAngle -= 1;

textPositionX = (cos(textPositionAngle * degreesToRadiansMultiplier) * (WHEEL_DIAMETER / 2.25)) + CENTERX;
textPositionY = CENTERY - (sin(textPositionAngle * degreesToRadiansMultiplier) * (WHEEL_DIAMETER / 2.25));

gdImageFilledArc( Roulette, CENTERX, CENTERY, WHEEL_DIAMETER, WHEEL_DIAMETER, sliceStartingAngle, sliceEndingAngle, drawingColor, gdArc );
gdImageStringFT( Roulette, NULL, white, "Vera.ttf", 14, textRotationAngle * degreesToRadiansMultiplier, textPositionX, textPositionY, pocketNumbers[ sliceCounter ] );
  } while ( ++sliceCounter < 37 );

  gdImageFilledEllipse( Roulette, CENTERX, CENTERY, INSIDE_COVER_DIAMETER,    INSIDE_COVER_DIAMETER, white );





   //gdImageFilledArc( Roulette, CENTERX, CENTERY, WHEEL_DIAMETER, WHEEL_DIAMETER, sliceStartingAngle, sliceEndingAngle, gold, gdArc );



    jpgImageFile = fopen( "RouletteImage.jpg", "wb" );
      gdImageJpeg( Roulette, jpgImageFile, -1 );
      fclose( jpgImageFile );
      gdImageDestroy( Roulette );
    }

谢谢:)(哦,它是欧洲轮盘赌盘)

===============>>#1 票数:0

真的很简单,我想我只是累了。

删除符号常量

#define WHEEL_DIAMETER IMAGE_WIDTH - 20

替换为整数

  int WHEEL_DIAMETER = IMAGE_WIDTH - 20;

  ask by user3112393 translate from so

未解决问题?本站智能推荐:

3回复

圆形包装文字需要稍作调整

您可能无法说出太多,但由于某种原因,由于我的算法存在缺陷,一些字符以某种方式被抵消了……如果有人能够弄清楚是什么原因,我将不胜感激。欢迎批评我,因为我对Java还是很陌生。 编辑:如果您查看上方的图像,则是E在左右两侧偏移WE 编辑:我认为这可能是在我计算文字大小与圆的大小时
1回复

我无法更改文字的字体

我想更改用户在文本字段中输入的文本的字体。 这是我的代码的路径: 但是我得到一些奇怪的错误。 奇怪,因为Internet上的每个人都使用此方法,而且显然每个人都很好。 这是来自gcc的错误消息: 有什么方法可以解决此问题?
1回复

将文字从字体添加到视频帧

我正在使用ffmpeg解码使用DirectShow显示的rtsp流,我需要在每个视频帧中添加文本,并且还需要记录添加了文本的视频。 因此,我无法使用DirectShow覆盖文本,因为它不会出现在要保存的原始帧上。 文本的要求(尚未确定)是它可以是各种字体或大小等。 那时我假设我需要创建
1回复

使用emWin和韩文字体时显示的字形错误

我在嵌入式系统上使用SEGGER emWin 。 我已经下载了一种韩文字体: Korean True Type Font并将该字体转换为C语言数据语句。 当我打印文本:한국어(“韩语”)时,什么也没打印出来。 文本(UTF-8)的十六进制代码为: \\xED\\x95\\x9C\\
6回复

C文字,这些存储在哪里

请考虑以下代码: 输出是“erlang”,我不太明白为什么..我当前的知识说字符串文字“erlang”和“java”都存储在进程地址空间中,在“常量”部分中。 根据这个,fucntion f应该将指针改为指向“java”,但这不会发生。 有人可以解释一下这里发生了什么吗?
2回复

正弦函数在哪里?

简单的问题: sin()在哪里? 我搜索过,只在Rust文档中发现有像std::num::Float这样的特性需要犯罪但没有实现 。
2回复

常量,文字和全局变量在哪里获得空间

我最近了解到,可以使用指针更改c中的常量值,但对于字符串文字则不可行。 可能的解释是这样的事实,即常量和其他字符串在空间的可修改区域中分配了空间,而字符串文字在空间中的不可修改区域(可能是代码段)中分配了。 我写了一个程序,显示这些变量的地址。 显示输出。 请解释这些变量究竟在哪
2回复

字符数组文字在哪里以及如何创建? [重复]

这个问题在这里已有答案: C和C ++中字符串文字的类型是什么? 4个答案 是在静态内存中创建的c ++中的字符串文字吗? 4个答案 我一直在尝试c中的字符串。 在这段代码中。 在内存中,字符串“output”被创建,并且因为我们有指针arr
3回复

文字字符串放在哪里,为什么我可以返回指向它们的指针?

我在回答 这个问题时偶然发现了这个功能: 我惊讶地发现,返回指向原义字符串的指针行得通,并且没有像我认为的那样出现段错误。 我一直以为文字会被压入堆栈或放入其他临时内存中,但仅限于函数范围。 但是在这里,它们似乎比我想象的更静态。 然后将它们放入整个可执行文件全局的某种字符串池中吗
4回复

复合/字符串文字在哪里存储在内存中?

我看了; 复合文字是C99功能,可用于创建没有名称的数组。 考虑这个例子: p指向包含3, 0, 3, 4和1个的五元素数组的第一个元素。 其实我想知道,这个数组是否会存储在内存中,因为它没有名字? 换言之,如果是 字符串"hello"将存储在内存中