A. 怎样快速学好Ai!
你是要自学的思路么?
1、熟悉左侧工具栏的每个工具的功能
2、熟悉右侧菜单栏的功能及头部菜单栏的功能
3、掌握钢笔绘图,必须要熟练掌握
4、掌握各种效果的制作方法,例如:渐变、阴影、不透明蒙版、混合、网格
5、熟悉对齐和路径查找器的各个功能
6、熟悉排版及刀模、纸张尺寸及排版限制、注意事项等
7、熟悉各印刷工艺的色彩、尺寸、制造限制及事项
8、学习制作各类包装及印刷稿的制作流程及制作细节
9、临摹他人的作品,多看、多想、多理解、多欣赏他人作品
10、开始进入实战,找些东西自己来做;前提是要清楚自己做的东西有哪些要求。可无偿帮别人做点东西开始或者去接一些小的订单,可开淘宝等。不满意顶多退款给客户
11、做之前要先跟客户商量,要做成什么效果;如没有要求的话对新手来说是很苦恼的,会无从下手。
12、再学习illustrator的同事也要掌握photoshop,两款软件结合使用才是硬道理
13、偷师:如不知如何了解各行业印刷流程及工艺方法可加企业QQ装扮成客户,跟对方洽谈。便可得知、屡试不爽!
14、临摹和抄袭要适可而止,不要依赖;不然只能停留在底层。
最好总结一句话:人分两种,一种是教不会的,一种是不用教的!
给自己定个方向,一般从基础到娴熟操作只需要两个月时间。之后的只能看自己的天赋了!
有些东西和制作方法不要刻意去学,多半都记不住的。等需要用的时候再去看怎么做,印象会更深刻。能够事半功倍!
注:设计不易做,入行需谨慎。
B. windows环境,多线程情况下,C语言向文件写入数据。
下面的程序,编译之后,你可以运行很多个实例,目前我将文件写在了D:\1.txt,每个程序写1000行数据,这些值你可以自己更改(比如 写在C:,每个程序写10000行等),等程序都写完后,你可以去文件中查看写文件的结果。补充一下,我是在VC6.0环境中写的,所以windows.h,如果你不是在这个环境中的话,可能需要修改一些定义,比如DWORD等。其他的API都是windows平台提供的API;
#include <stdio.h>
#include "windows.h"
int main()
{
//获取进程ID,因为你希望是多个进程运行同时写一个文件,所以,我们打印出进程ID
DWORD dwProcessID = GetCurrentProcessId();
//初始化我们要写入文件中的内容,及该内容长度;
char szContent[100] = {0};
sprintf(szContent,"process[%u] write file\r\n",dwProcessID);
DWORD dwContentLen = strlen(szContent);
//创建互斥量,这样可以进行进程间的互斥,当然用这个也可以做线程间的互斥
HANDLE hMutex = CreateMutex(NULL,FALSE,"MyFileMutex");
if (NULL == hMutex)
{
printf("[%u]Create/Open Mutex error!\r\n",dwProcessID);
return 1;
}
//创建或打开文件
HANDLE hFile = CreateFile("D:\\1.txt",
GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_WRITE | FILE_SHARE_READ,NULL,
OPEN_ALWAYS,
FILE_ATTRIBUTE_ARCHIVE,
NULL);
if (INVALID_HANDLE_VALUE == hFile)
{
printf("[%u]Creat/Open file error!\r\n",dwProcessID);
return 1;
}
//循环写入文件
for(int i = 0; i < 1000 ; i++)
{
//等待临界资源,即锁定文件
WaitForSingleObject(hMutex,INFINITE);
printf("Process[%u] Get the signal\r\n",dwProcessID);
DWORD len = 0;
//因为是共享写文件,即多个程序写一个文件,所以一定要将文件指针偏移到尾部
SetFilePointer(hFile,0,NULL,FILE_END);
//写入文件
BOOL rnt = WriteFile(hFile,szContent,dwContentLen,&len,NULL);
if (rnt == FALSE)
{
printf("Process[%u] Fail to write file\r\n",dwProcessID);
}
//释放互斥量,解除锁定
ReleaseMutex(hMutex);
//加个Sleep便于我们中间观察结果
Sleep(30);
}
CloseHandle(hMutex);
CloseHandle(hFile);
return 0;
}
应你要求,我把AIP中的宏定义解释如下:
HANDLE hFile = CreateFile("D:\\1.txt",
GENERIC_READ | GENERIC_WRITE,//表示程序对该文件有读和写的权限
FILE_SHARE_WRITE | FILE_SHARE_READ,//表示可以多个程序共享读和写的权限
NULL,
OPEN_ALWAYS,//表示打开该文件,如果该文件不存在,则创建该文件
FILE_ATTRIBUTE_ARCHIVE,//文件的属性为存档
NULL);
WaitForSingleObject(hMutex,INFINITE);
//INFINITE表示永远等待,直到hMutex有信号为止
SetFilePointer(hFile,0,NULL,FILE_END);
//FILE_END表示从文件尾部开始偏移;实际此举就是将文件指针偏移到文件尾部;