Eye contact is good, half smile is not good (or a grin, those are good for teasing joking). When you want to give a compliment you need a genuine authentic smile (look up the so-called "Duchenne smile"), or even no smile at all, but a look of enchantement (be careful, no-smile doesn't mean look morose or depressed! that's a no no). It may not be necessarily about just smile or eye contact, you'll need also the proper tone of voice, the proper timing (for example if you've just been teasing, you stop talking for a while and look at her, the momentary silence signals a shift in mood and topic, then you genuinely deliver your killer compliment like in a movie).