锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
Skia is an open source 2D graphics library which provides common APIs that work across a variety of hardware and software platforms. It serves as the graphics engine for Google Chrome and Chrome OS, Android, Mozilla Firefox and Firefox OS, and many other products.
How to download and build Skia
Just follow https://skia.org/user/download, and do it step by step, we will need a static build for use lately.
How to use Skia in a MFC application
1. Create your MFC application
2. Add Skia path to "VC++ Directories" of the project
3. Add Skia library paths to "Additional Library Directories"
4. Add "uafxcw.lib;LIBCMT.lib;opengl32.lib;glu32.lib;skia.lib;sk_app.GLWindowContext.obj;sk_app.GLWindowContext_win.obj" to "Additional Dependencies". Add "uafxcw.lib;LIBCMT.lib;" to "Ignore Specific Default Libraries."
5. In XXXDlg.h:
6. In XXXDlg.cpp:
m_skaContext = window_context_factory::MakeGLForWin(m_hWnd, m_paras);
return TRUE;
}
7. If everything is OK, the result will be:
]]>
http://www.shnenglu.com/Files/aqazero/OffsetDemo6.zip
http://www.shnenglu.com/Files/aqazero/OffsetDemo6.zip
http://www.shnenglu.com/Files/aqazero/OffsetDemo6.zip
http://www.shnenglu.com/Files/aqazero/OffsetDemo5_8.zip
http://www.shnenglu.com/Files/aqazero/OffsetDemo6.zip
涓寮濮嬫垜寮勪簡榪欎釜(鍥綢)鐢ㄦ潵鐢昏〃鏍?table鏄竴涓璞★紝鍖呭惈cell瀵硅薄錛屼互鍙妑owInfo鍜宑olInfo銆俢ell鍖呭惈鐨剆tring錛宑har騫朵笉浣滀負鍗曠嫭鐨勪竴涓璞°?br />
鍥綢I
鍥綢II
鍚庢潵鏀瑰啓錛屾妸姣忎釜char褰撴垚涓涓璞★紝浣哻har瀵硅薄鍜屽叾瀹冨璞$殑compose鍗村張鎴愰棶棰樸傘?br />Range鐨勮〃紺轟篃鎴愰棶棰樸?br />
浼間箮table絳夊璞″彧鑳界粷瀵瑰畾浣嶏紝鏃犳硶瀹炵幇璞ord涓〃鏍肩殑瀵歸綈鏂瑰紡鍜屾枃瀛楀洿緇曟晥鏋溿?/p>
鍐欏緱濂界瘡錛屾湁璋佺煡閬撴湁寮婧愮殑鐢–++鍐欑殑graphical text editor錛屾垨鑰呰嚜宸辨湁鍐欑殑錛屽笇鏈涜兘浜ゆ祦涓涓嬪晩銆?/p>
Precedence | Operator | Description | Example | Associativity |
---|---|---|---|---|
1 | () [] -> . :: ++ -- |
Grouping operator Array access Member access from a pointer Member access from an object Scoping operator Post-increment Post-decrement |
(a + b) / 4; array[4] = 2; ptr->age = 34; obj.age = 34; Class::age = 2; for( i = 0; i < 10; i++ ) ... for( i = 10; i > 0; i-- ) ... |
left to right |
2 | ! ~ ++ -- - + * & (type) sizeof |
Logical negation Bitwise complement Pre-increment Pre-decrement Unary minus Unary plus Dereference Address of Cast to a given type Return size in bytes |
if( !done ) ... flags = ~flags; for( i = 0; i < 10; ++i ) ... for( i = 10; i > 0; --i ) ... int i = -1; int i = +1; data = *ptr; address = &obj; int i = (int) floatNum; int size = sizeof(floatNum); |
right to left |
3 | ->* .* |
Member pointer selector Member pointer selector |
ptr->*var = 24; obj.*var = 24; |
left to right |
4 | * / % |
Multiplication Division Modulus |
int i = 2 * 4; float f = 10 / 3; int rem = 4 % 3; |
left to right |
5 | + - |
Addition Subtraction |
int i = 2 + 3; int i = 5 - 1; |
left to right |
6 | << >> |
Bitwise shift left Bitwise shift right |
int flags = 33 << 1; int flags = 33 >> 1; |
left to right |
7 | < <= > >= |
Comparison less-than Comparison less-than-or-equal-to Comparison greater-than Comparison geater-than-or-equal-to |
if( i < 42 ) ... if( i <= 42 ) ... if( i > 42 ) ... if( i >= 42 ) ... |
left to right |
8 | == != |
Comparison equal-to Comparison not-equal-to |
if( i == 42 ) ... if( i != 42 ) ... |
left to right |
9 | & | Bitwise AND | flags = flags & 42; | left to right |
10 | ^ | Bitwise exclusive OR | flags = flags ^ 42; | left to right |
11 | | | Bitwise inclusive (normal) OR | flags = flags | 42; | left to right |
12 | && | Logical AND | if( conditionA && conditionB ) ... | left to right |
13 | || | Logical OR | if( conditionA || conditionB ) ... | left to right |
14 | ? : | Ternary conditional (if-then-else) | int i = (a > b) ? a : b; | right to left |
15 | = += -= *= /= %= &= ^= |= <<= >>= |
Assignment operator Increment and assign Decrement and assign Multiply and assign Divide and assign Modulo and assign Bitwise AND and assign Bitwise exclusive OR and assign Bitwise inclusive (normal) OR and assign Bitwise shift left and assign Bitwise shift right and assign |
int a = b; a += 3; b -= 4; a *= 5; a /= 2; a %= 3; flags &= new_flags; flags ^= new_flags; flags |= new_flags; flags <<= 2; flags >>= 2; |
right to left |
16 | , | Sequential evaluation operator | for( i = 0, j = 0; i < 10; i++, j++ ) ... | left to right |